我正在尝试获取特定导演合作过的演员列表,以及这些演员从电影数据库中获取的电影列表。
SELECT DISTINCT A_First_Name, A_Last_Name, Film_Title
FROM
(SELECT *
FROM Actor, Film, Film_Actor_Director_Genre
WHERE Actor.AID=Film_Actor_Director_Genre.AID
AND Film.FID=Film_Actor_Director_Genre.FID)
WHERE A_First_Name IN
(SELECT A_First_Name
FROM
(SELECT *
FROM Actor, Director,
Film_Actor_Director_Genre
WHERE
Actor.AID=Film_Actor_Director_Genre.AID
AND
Director.DID=Film_Actor_Director_Genre.DID)
WHERE D_First_Name=[Director’s first name?]
OR D_Last_Name=[Director’s last name?]);
假设我想知道导演D01使用的演员列表,示例结果如下:
Actor Film
----- ----
A01 F01
A01 F02
A01 F03
A01 F04
A02 F01
A02 F02
A02 F05
A02 F06
A03 F01
A04 F01
A04 F02
A04 F09
A05 F01
A05 F02
A06 F10
A07 F01
A07 F02
A07 F04
etc. etc.
然而,由于D01的演员名单可能会非常长,我想只展示前5名演员(即在大多数电影中使用D01的演员)以及演员所有的电影。因此,我只想限制演员而不是电影。期望的结果是:
Actor Film
----- ----
A01 F01
A01 F02
A01 F03
A01 F04
A02 F01
A02 F02
A02 F05
A02 F06
A04 F01
A04 F02
A04 F09
A05 F01
A05 F02
A07 F01
A07 F02
A07 F04
我尝试在各种子查询中实现SELECT DISTINCT TOP 5
语法,但它们返回了5个结果的奇怪组合,例如
Actor Film
----- ----
A01 F01
A01 F02
A02 F01
A02 F02
A06 F10
如何限制结果只显示使用过D01的前5位演员以及这些演员所扮演的所有电影?感谢您的时间,感谢我能得到的任何帮助!
答案 0 :(得分:1)
我觉得这样的事情会起作用
$opts = array(
'http' => array(
'user_agent' => 'PHP libxml agent',
)
);
$context = stream_context_create($opts);
libxml_set_streams_context($context);
没有能够测试查询的小技巧。应该工作!
答案 1 :(得分:1)
这是访问?
假设他的查询是正确的,你可以用一些更简单的东西替换限制(和拥有):
select top 5 aid, count(*) as qty from film_actor_director_genre group by aid, did order by 2 desc
如果访问无法处理该order by子句,您可以将其切换回
select top 5 aid, count(*) as qty from film_actor_director_genre group by aid, did order by count(*) desc