【发布时间】:2020-08-27 16:46:58
【问题描述】:
因此,我正在尝试查询选择 SUM 的所有分钟都来自“科幻”电影中演员的角色。 当我执行 INNER JOIN 时,我得到了正确的值,但它不显示 NULL 值,然后当我执行 LEFT JOIN 时,我得到完全不同的值,这些值远高于预期。 这是查询选择
SELECT a.actor_id, a.first_name, a.last_name, SUM(allfilms.length)
AS 'total_combined_film_length'
FROM actor a
LEFT JOIN film_actor film_a ON a.actor_id = film_a.actor_id
LEFT JOIN film allfilms ON film_a.film_id = allfilms.film_id
LEFT JOIN film_category film_c ON allfilms.film_id = film_c.film_id
INNER JOIN category c on film_c.category_id = c.category_id && c.name='Sci-Fi'
GROUP BY a.actor_id
ORDER BY (a.actor_id) DESC;
结果给了我:
+----------+-------------+--------------+----------------------------+
| actor_id | first_name | last_name | total_combined_film_length |
+----------+-------------+--------------+----------------------------+
| 200 | THORA | TEMPLE | 287 |
| 198 | MARY | KEITEL | 314 |
| 197 | REESE | WEST | 190 |
| 196 | BELA | WALKEN | 59 |
| 195 | JAYNE | SILVERSTONE | 263 |
| 193 | BURT | TEMPLE | 113 |
事实上,我也想要以下条目:
| 199 | JOHN | SMITH | 0 |
| 194 | RODGER | FED | 0 |
这是我在最终 JOIN 上执行 LEFT JOIN 时的样子,而不是 INNER JOIN,即:
LEFT JOIN category c on film_c.category_id = c.category_id && c.name='Sci-Fi'
+----------+-------------+--------------+----------------------------+
| actor_id | first_name | last_name | total_combined_film_length |
+----------+-------------+--------------+----------------------------+
| 200 | THORA | TEMPLE | 2568 |
| 199 | JULIA | FAWCETT | 1555 |
| 198 | MARY | KEITEL | 4962 |
| 197 | REESE | WEST | 3897 |
| 196 | BELA | WALKEN | 3198 |
| 195 | JAYNE | SILVERSTONE | 3217 |
| 194 | MERYL | ALLEN | 2729 |
谢谢,有什么帮助。真的只是好奇为什么这些值都搞砸了!
【问题讨论】: