如何通过连接表并使用另一个表中的where子句来获取数据

时间:2018-01-22 14:37:06

标签: mysql

让我用以下例子解释这个问题:

这就是我的MySQL数据库的样子:

表名:general_info

Movie_ID    Movie_Name
1           Iron Man
2           Superman
3           Batman

表名:cast

Movie_ID     Cast_Name              
1            Robert Downey Jr.      
1            Gwyneth Paltrow        

2            Henry Cavill           
2            Amy Adams              

3            Christian Bale         
3            Heath Ledger   

表名production_companies

Movie_ID       Production_name        
1              Marvel                 
1              Paramount              

2              Legendary Pictures     
2              DC Entertainment       

3              Snycopy    

表名user_cast_preference

user_id     user_cast_name
1           Robert Downey Jr.
1           Gwyneth Paltrow 
1           Christian Bale 
1           Heath Ledger

表名user_production_preference

user_id        user_production_name
1              Marvel
1              Paraamount
1              Syncopy

<小时/> <小时/>

现在,我想要获取符合用户偏好的所有电影。换句话说,获取所有电影,用户首选的演员+首选制作公司。

以下是预期结果

movie_id     movie_name    cast_name               production_name


1            Iron Man      Robert Downey Jr,       Marvel, 
                           Gwyneth Paltrow         Paramount

2            Batman        Christian Bale,         Syncopy
                           Heath Ledger

我只取得了铁人三项和蝙蝠侠并且没有取得超人,因为至少有一部电影的演员/ production_company在用户的首选列表中。

甚至连一个演员或制片公司的名字都不是超人。

1 个答案:

答案 0 :(得分:0)

select movie_id,movie_name,cast_name,production_name
from general_info as g
  inner join cast as c on g.movie_id=c.movie_id
  inner join production_companies p on g.movie_id=p.movie_id
where c.cast_name in (select user_cast_name from user_cast_prefrence)

尝试此查询..请帮助并标记答案