我正在尝试编写一个连接3个表的查询。
第一个表是有关每个节日的信息。
第二张表是每个节日的票数。
第三张表是每个节日的评论。
我想联接所有3个表,以便从table1获得所有列,将Festival1上的table1与table2联接起来,但我还需要计算表3中适用于每个节日的记录数。
前2个表给我一个结果,因为它们都包含数据,但是表3空了,因为还没有评论,因此将其添加到我的查询中不会得到任何结果。
SELECT f.*,
v.total,
v.votes,
v.festivalid,
r.reviewcount as count
FROM festivals f
INNER
JOIN vote v
ON f.festivalid = v.festivalid
INNER
JOIN (SELECT festivalid,
count(*) as reviewcount
FROM reviews)
GROUP BY festivalid) as r
on r.festivalid = v.festivalid
最佳答案
SELECT f.*,
v.total,
v.votes,
v.festivalid,
ifnull(r.reviewcount,0) as count
FROM festivals f
INNER
JOIN vote v
ON f.festivalid = v.festivalid
LEFT OUTER
JOIN (SELECT festivalid,
count(*) as reviewcount
FROM reviews)
GROUP BY festivalid) as r
on r.festivalid = v.festivalid
如果没有评论,则添加ifnull以将评论显示为0。