我有三个简单的表格,分别是
演员表:
电影演员表:
我的目标是找到一组演员,他们一起出演电影最多,并列出这些电影的标题。将结果按字母顺序排序。此外,第一个演员的
我能想到的最好的方法就是创建一个新的派生表,然后尝试获取数据,但这个查询会返回很多重复的行:
大家好,请帮忙查询一下,因为我只有基本的SQL知识。提前感谢!
这不是作业,只是一个我需要做的简单例子。真正的表格不是电影和演员。我的知识可以进行连接,但我不知道如何将相同的演员放在一行中。现在我受限于我的知识,但我正在努力学习!
Actor
、Film
和Film_actor
。
Film_actor
表格: Column | Type | Modifiers
------------+-----------------------------+----------
actor_id | smallint | not null
film_id | smallint | not null
演员表:
Column | Type | Modifiers
------------+-----------------------------+----------
actor_id | integer | not null
first_name | character varying(45) | not null
last_name | character varying(45) | not null
电影演员表:
Column | Type | Modifiers
------------+-----------------------------+----------
film_id | integer | not null
title | character varying(255) | not null
我的目标是找到一组演员,他们一起出演电影最多,并列出这些电影的标题。将结果按字母顺序排序。此外,第一个演员的
actor_id
应小于第二个演员的actor_id
。所需输出如下:first_actor | second_actor | title
----------------+---------------+---------------
Daniel Craig | Eva Green | Casino Royale
我能想到的最好的方法就是创建一个新的派生表,然后尝试获取数据,但这个查询会返回很多重复的行:
SELECT
CASE
WHEN ac.actor_id < te.actor_id THEN ac.first_name
ELSE te.first_name
END
, CASE
WHEN ac.actor_id > te.actor_id THEN te.first_name
ELSE ac.first_name
END
, fi.title
, fi.film_id
FROM Film_Actor as fa
INNER JOIN Actor as ac ON fa.actor_id = ac.actor_id
INNER JOIN Film as fi ON fa.film_id = fi.film_id
INNER JOIN ( SELECT a_c.first_name, a_c.last_name, a_c.actor_id FROM
Film_Actor as f_a
INNER JOIN Actor as a_c ON f_a.actor_id = a_c.actor_id) te
ON te.actor_id=fa.actor_id
大家好,请帮忙查询一下,因为我只有基本的SQL知识。提前感谢!
这不是作业,只是一个我需要做的简单例子。真正的表格不是电影和演员。我的知识可以进行连接,但我不知道如何将相同的演员放在一行中。现在我受限于我的知识,但我正在努力学习!