0

这是我从一个表中获取模型信息并从另一个表中获取单张图片的查询。我必须对此查询进行哪些更改才能获得 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
4

1 回答 1

0

你也应该把它放在你的 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

如果没有返回结果,则确保有符合要求的记录。因为查询没有问题。尝试将您的查询打印到屏幕等,以查看每个变量是否都有值。

编辑:

您应该丢失 GROUP BY。

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
于 2012-05-15T13:55:08.523 回答