php mysql内部连接-获取特定行

php mysql内部连接-获取特定行,php,mysql,join,Php,Mysql,Join,这是我的查询,用于从一个表中获取模型信息,并从另一个表中获取单个图片。我必须对此查询进行哪些更改,才能获得order BY sort DESC所在的图片?在图片表中,有一个按名称排序的字段。每行字段的默认值为0。但一个随机行的值为1。我想得到那一排。但是,我不想使用WHERE sort=1,因为即使在没有行的排序值为1的情况下,也应该提取一行 $sql="SELECT tc.id,tc.alias,tc.firstname,tci.imagename FROM ".

这是我的查询,用于从一个表中获取模型信息,并从另一个表中获取单个图片。我必须对此查询进行哪些更改,才能获得order BY sort DESC所在的图片?在图片表中,有一个按名称排序的字段。每行字段的默认值为0。但一个随机行的值为1。我想得到那一排。但是,我不想使用WHERE sort=1,因为即使在没有行的排序值为1的情况下,也应该提取一行

    $sql="SELECT tc.id,tc.alias,tc.firstname,tci.imagename 
          FROM ".$pre."models tc
          INNER JOIN ".$pre."model_images tci ON tc.id=tci.userid 
          WHERE activated=1 AND sex=$sex AND city=$city AND published=1
          GROUP BY tc.id ORDER BY firstname ASC";
提前谢谢你

使用以下方法解决:

    SELECT tc.id,tc.alias,tc.firstname, 
    (SELECT imagename FROM  ".$pre."model_images WHERE userid= tc.id 
    ORDER BY sort DESC LIMIT 1) AS imagename
    FROM ".$pre."models tc
    WHERE tc.activated=1 AND tc.sex=1 AND tc.city=2 AND tc.published=1
    ORDER BY tc.firstname ASC

您也应该将其放在WHERE子句中。不过需要注意的一点是,要小心使用列名的方式。最好告诉他们属于哪张桌子

因此:

WHERE activated=1 AND sex=$sex AND city=$city AND published=1
应该是:

WHERE tc.activated=1 AND tc.sex=$sex AND tc.city=$city AND tc.published=1
然后只需将“排序”列添加到其中:

WHERE tc.activated=1 AND tc.sex=$sex AND tc.city=$city AND tc.published=1 AND tci.sort=1
如果没有返回结果,则确保有符合要求条件的记录。因为这个查询没有问题。尝试将您的查询打印到屏幕等,以查看是否每个变量都有一个值

编辑:

你应该在一周内失去这个小组

SELECT tc.id,tc.alias,tc.firstname,tci.imagename 
FROM ".$pre."models tc
INNER JOIN ".$pre."model_images tci ON tc.id=tci.userid 
WHERE tc.activated=1 AND tc.sex=$sex AND tc.city=$city AND tc.published=1 AND tci.sort=1

问题已更新。抱歉造成混淆。按排序说明、名字ASC排序?已尝试上述方法。没用。仍然返回sort=0我已更新了问题。你能据此编辑吗?非常感谢。然后我将有多个orderby's:GROUP by tc.id order by firstname ASC。“我该怎么办呢?”萨曼尼亚齐不知道你到底想干什么。你的组员错了。默认情况下,MySQL允许错误的查询,如分组查询。您正在按tc.id进行分组。我想你是主键吧?您不能按总是唯一的内容分组。-但是如果它不是唯一的,那么您仍然只能显示您在分组依据中指定的列以及一些附加信息,包括总和、平均值等。使用分组依据时,您不能只在选择中放置任何列。如果不知道自己正在做什么以及为什么要将结果分组,就很难帮助你。谢谢你迄今为止的帮助。我试图实现的是从models表中获取所有模型,并从images表中为每个模型获取一张图片。但每个都有5-20张图片,我只想获取排序值为1的图片。请参阅更新的问题。分组依据用于确保仅选择了一个图像。但是如果在当前场景中我使用GROUPBY,它仍然返回一个结果,但忽略第二个ORDER By属性。在这个要求出现之前,它运行良好。