我在两张桌子上运行联接,但我遇到了一些麻烦。
感兴趣的表:'照片','投票','周'
我正在尝试运行一个查询,该查询会提取其中包含的照片列表,以及活动的“周”的总投票数。
'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子句仍然会阻止它工作。
我希望我的问题有道理......
答案 0 :(得分:3)
您需要外部联接。因为您只想在外连接上应用where条件,所以需要在连接条件中提及week_id。
LEFT JOIN `vote` ON `vote`.`photo_id` = `photo`.`id` AND `vote`.`week_id` = '6'