我試圖找到包含2或其中演員的所有電影的列表。查詢數據庫查詢與關係表相交的記錄列表
select title from Movie where movieID in(
select movieID
from Cast
join MovieHasCast
on Cast.castID = MovieHasCast.castID
where cast.name = 'gene wilder'
intersect
select movieID
from Cast
join MovieHasCast
on Cast.castID = MovieHasCast.castID
where cast.name = 'richard pryor')
我的選擇將是這樣的:
select title from Movie where movieID in(
select movieID
from Cast
join MovieHasCast
on Cast.castID = MovieHasCast.castID
where cast.name = 'gene wilder'
and movieID in (
select movieID
from Cast
join MovieHasCast
on Cast.castID = MovieHasCast.castID
where cast.name = 'richard pryor'))
這只是我如何實現這一點的樣本。但是,我在C#中動態構建這個查詢,以按流派,演員等過濾電影列表。我關注性能。
這是完成此任務的最佳方式嗎?我覺得有一個更好的方法來做到這一點我只是不知道如何尤其是因爲用戶可以選擇10個演員成員,並且該查詢將開始變得非常大 - 即使它可能會返回0記錄。
你可以張貼一些示例數據又該結果是什麼?如果我拒絕你的權利只是一個單一的查詢與一羣將做 –
@JorgeCampos有15K +演員成員我無法發佈他們,但是可以放心這兩個查詢確實返回正確的結果,這是一個名單,其中理查德先生和基因懷爾德明星在他們 – Kairan
是的,我只是要求一個例子,像每個表的3行。但我認爲@TI答案是你想要的 –