我试图找到包含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答案是你想要的 –