我试图统计所有演员被标记为“未归类”的电影。结果应包括所有没有扮演未经授权角色但演员总数为0的演员。
我尝试过
SELECT COUNT(MOVIEROLE.MR_ROLE) AS "COUNT", ACTOR.A_NAME
FROM MOVIEROLE LEFT OUTER JOIN ACTOR
ON MOVIEROLE.A_ID = ACTOR.A_ID
WHERE MOVIEROLE.MR_ROLE LIKE '%UNCREDITED%'
GROUP BY ACTOR.A_NAME
这将返回
COUNT | A_NAME
3 | Chris Evans
1 | Chris Hemsworth
2 | Mark Ruffalo
1 | Samuel L Jackson
1 | Scarlett Johansson
我需要可以返回上面内容的东西,但上面也要加上
COUNT | A_NAME
0 | Robert Downey JR
0 | Jeremy Renner
非常感谢您的帮助!
答案 0 :(得分:0)
如果要保留所有left join
中的第一张表:
select a.a_name, count(mr.a_id)
from actor a left join
movierole mr
on mr.a_id = a.a_id and mr.role like '%UNCREDITED%'
group by a.a_name;
答案 1 :(得分:0)
您可以通过将LEFT JOIN
更改为RIGHT JOIN
来获得所需的结果,这将保留JOIN
表达式中第二个(“右”)表中的所有行。请注意,您需要将WHERE
表达式移至JOIN
条件:
SELECT COUNT(MOVIEROLE.MR_ROLE) AS "COUNT", ACTOR.A_NAME
FROM MOVIEROLE RIGHT OUTER JOIN ACTOR
ON MOVIEROLE.A_ID = ACTOR.A_ID AND MOVIEROLE.MR_ROLE LIKE '%UNCREDITED%'
GROUP BY ACTOR.A_NAME