Mysql连接查询,获取记录列表和加入投票

时间:2011-11-07 23:17:37

标签: mysql sql database

我在两张桌子上运行联接,但我遇到了一些麻烦。

感兴趣的表:'照片','投票','周'

我正在尝试运行一个查询,该查询会提取其中包含的照片列表,以及活动的“周”的总投票数。

'vote'表包含以下外键:photo_id,week_id,user_id。这使我能够确定投票所在的“周”。另外,将周视为一个实体而非时间框架......它只是“周”表中的记录。

这是我到目前为止所做的:

SELECT *, COUNT(*) as `weekly_votes` 
FROM (`photo`) 
JOIN `vote` ON `vote`.`photo_id` = `photo`.`id` 
WHERE `vote`.`week_id` = '6' 
GROUP BY `photo`.`id`

问题是这会在指定周内的投票表中提取一张投票的照片列表,但如果当周没有投票,则不会返回任何照片。

基本上是:

 WHERE `vote`.`week_id` = '6'

只需要应用于join语句中的东西,而不是阻止它限制返回的照片。我知道至少我需要使用某种OUTER连接,但我认为WHERE子句仍然会阻止它工作。

我希望我的问题有道理......

1 个答案:

答案 0 :(得分:3)

您需要外部联接。因为您只想在外连接上应用where条件,所以需要在连接条件中提及week_id。

LEFT JOIN `vote` ON `vote`.`photo_id` = `photo`.`id` AND `vote`.`week_id` = '6'