我有一個電影數據庫,其中一個表是'類別',它包含數據庫中的所有電影類型。左連接不返回左表中的所有行
運行下面的查詢:
SELECT category.name FROM category
還給行:
Action
Animation
Children
Classics
Comedy
Documentary
Drama
Family
Foreign
Games
Horror
Music
New
Sci-Fi
Sports
Travel
我想查詢數據庫,找到每個特定類型的#一個特定的演員有一個角色,但我希望它能夠在下一列中使用#返回所有流派。這是我的初始查詢:
SELECT q1.name AS 'Film Category', COUNT(q2.name) AS '# of Films Ed Chase has appeared in'
FROM (
SELECT category.name FROM category
) AS q1
LEFT JOIN (
SELECT category.name FROM category
INNER JOIN film_category ON film_category.category_id = category.category_id
INNER JOIN film ON film.film_id = film_category.film_id
INNER JOIN film_actor ON film.film_id = film_actor.film_id
INNER JOIN actor ON actor.actor_id = film_actor.actor_id
WHERE actor.first_name = 'ED' AND actor.last_name = 'CHASE'
) AS q2
ON q1.name = q2.name AND '# of Films Ed Chase has starred in' >= 0
GROUP BY q2.name
ORDER BY q2.name;
,它給回該表,缺少一些行的(我想這給所有的流派,不只是一個人的演員有一個角色):
Film Category # of Films Ed Chase has appeared in
Animation 0
Action 2
Classics 2
Documentary 6
Drama 3
Foreign 2
Music 1
New 2
Sci-Fi 1
Sports 2
Travel 1
有趣的是,它返回'0'的'動畫',但'兒童'或'喜劇'這是我正在尋找的結果(所有類型返回)沒有行。我究竟做錯了什麼?
你內心的連接讓我感到羞恥,所以它可能沒有做你想做的事。給我幾分鐘的時間來嘗試重寫它。 –
你絕對確定演員的名字總是大寫嗎? –
明白了。見下文。 –