0

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

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

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

4

2 回答 2

2

你应该用LEFT JOIN这个。

LEFT JOIN不同于INNER JOIN这是您现在正在做的事情)。LEFT JOIN显示左侧表中定义的所有记录,无论它在结果的右侧中是否有匹配记录。

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-03-29T09:48:59.777 回答
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为您的直接连接使用语法,这样更容易防止丢失连接条件。

于 2013-03-29T09:50:24.467 回答