如何在此SQL选择中显示null cateogories?

时间:2016-07-09 22:04:39

标签: mysql

以下是我获取演员凯文布鲁姆主演的所有电影类别列表的选择,旁边是由凯文主演的该类别的电影数量。

onDidFocus()

我还希望这个列表包含Kevin没有任何电影的所有类别。我尝试使用不同类型的连接语句,但没有运气。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

使用left join s

 SELECT category.name, count(*) as kevinCount    
 FROM category    
 LEFT JOIN film_category ON film_category.category_id = category.category_id    
 LEFT JOIN film ON film.film_id = film_category.film_id    
 LEFT JOIN film_actor ON film_actor.film_id = film.film_id    
 LEFT JOIN actor ON actor.actor_id = film_actor.actor_id 
                AND actor.first_name = 'KEVIN' 
                AND actor.last_name = 'BLOOM'    
 GROUP BY category.name;    

答案 1 :(得分:0)

A left join解决了保留所有类别的问题。您还需要计算正确的字段:

SELECT c.name, count(a.actor_id) as kevinCount    
FROM category c LEFT JOIN
     film_category fc
     ON fc.category_id = c.category_id LEFT JOIN
     film_actor fa
     ON fa.film_id = fc.film_id LEFT JOIN
     actor a
     ON a.actor_id = fa.actor_id AND a.first_name = 'KEVIN' AND a.last_name = 'BLOOM'    
GROUP BY c.name;   

注意:

  • 表别名使查询更容易编写和阅读。
  • 您无需加入表格film。必填列位于film_categoryfilm_actor
  • 如果电影有多个类别,同一个文件可能会被多次计算。