有一些问题已经像这样,但我还没有找到完全一样的问题。
SELECT A.first_name, A.last_name, SUM(F.length)
FROM actors A
LEFT JOIN film_actors FA ON A.actor_id=FA.actor_id
LEFT JOIN film F ON FA.film_id=F.film_id
LEFT JOIN film_category FC ON FC.film_id=F.film_id
LEFT JOIN category C ON FC.category_id=C.category_id
WHERE C.name="Sci-Fi"
GROUP BY A.last_name, A.first_name;
我的问题是我只需要总结科幻小说,但我需要向所有演员报告。如果演员从未进入科幻电影,他们应该在返回的列表中,但是他们的长度为0。 WHERE
正在切断那些没有科幻电影的人,这是我不知道怎么做的问题。
答案 0 :(得分:1)
尝试使用CASE .... WHEN子句:
SELECT A.first_name, A.last_name,
SUM(CASE WHEN C.name="Sci-Fi" THEN F.length ELSE 0 END)
FROM actors A
LEFT JOIN film_actors FA ON A.actor_id=FA.actor_id
LEFT JOIN film F ON FA.film_id=F.film_id
LEFT JOIN film_category FC ON FC.film_id=F.film_id
LEFT JOIN category C ON FC.category_id=C.category_id
GROUP BY A.last_name, A.first_name;