mysql SQL Sakila Query Question -查找所有16个电影类别中的所有演员

mwkjh3gx  于 2023-02-03  发布在  Mysql
关注(0)|答案(1)|浏览(174)

我在试着从Sakila数据库中查询一个问题。
查询应该找到在所有16个电影类别中担任过主角的所有演员。
为了将所有这些信息放到一个表中进行查询,我执行了一个INNER JOIN:

SELECT a.first_name, a.last_name FROM actor a
INNER JOIN film_actor fa
ON fa.actor_id = a.actor_id
INNER JOIN film_category fc
ON fc.film_id = fa.film_id;

然而,从那里我对category_id执行了GROUP BY,但不知道如何迭代和计数一个特定的actor_id是否拥有所有16个类别?
这种复杂的查询是否需要编写函数或过程?

bvpmtnay

bvpmtnay1#

您就快完成了。根据演员姓名分组,并检查唯一类别计数是否为16:

SELECT a.actor_id, a.first_name, a.last_name
FROM actor a
  INNER JOIN film_actor fa ON fa.actor_id = a.actor_id
  INNER JOIN film_category fc ON fc.film_id = fa.film_id
GROUP BY a.actor_id, a.first_name, a.last_name 
HAVING COUNT(DISTINCT fc.category_id) = 
  ( 
    SELECT COUNT(DISTINCT category_id) 
    FROM film_category
  )

相关问题