按投票顺序DESC但未投票不显示

时间:2013-03-29 09:47:45

标签: php mysql sql select join

我在mySQL中找到一个解决方案时遇到了一些麻烦,我有2个表,其中一个是我的图像,另一个是我的投票和image_id,我用这一行绑定在一起:

$sql = "SELECT `image`  FROM `sh_images`, `sh_votes` WHERE
`sh_images`.`id`=`sh_votes`.`image_id` ORDER BY `vote` DESC";

一切正常,但未投票的图像未显示。那么你有解决方案吗?

2 个答案:

答案 0 :(得分:2)

您应该在此使用LEFT JOIN

LEFT JOININNER JOIN不同(您现在正在做的)。 LEFT JOIN显示在 LeftHand侧上定义的所有记录,无论它在结果上的 RightHand side 表中是否有匹配的记录,或者没有。

SELECT  image, vote  
FROM    sh_images 
        LEFT JOIN sh_votes 
            ON sh_images.id = sh_votes.image_id 
ORDER   BY vote DESC

要进一步了解联接,请访问以下链接:

答案 1 :(得分:1)

当然,只需使用LEFT JOIN:

SELECT image 
FROM sh_images
LEFT JOIN sh_votes ON sh_images.id=sh_votes.image_id 
ORDER BY vote DESC;

顺便说一下,考虑使用INNER JOIN语法进行直接连接,这样可以更容易地防止缺少连接条件。