【问题标题】:Mysql join query, getting list of records and joining votesMysql join 查询,获取记录列表并加入投票
【发布时间】:2011-11-07 23:17:36
【问题描述】:

我正在两个表上运行连接,但遇到了一些问题。

感兴趣的表格:'photo'、'vote'、'week'

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

“投票”表由以下外键组成: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 子句仍然会阻止它工作。

我希望我的问题有意义...

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2014-03-15
      • 1970-01-01
      相关资源
      最近更新 更多