我正在尝试编写一个连接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。

10-06 08:50