SQL查询 - 选择查询

时间:2015-03-19 17:23:23

标签: mysql sql database syntax-error

以下是我的数据库关系:

显示(showID,title,premiere_year,网络,创建者,类别)

剧集(showID,episodeID,airdate,title)

  • showID是显示的外键

actor(actID,fname,lname)

main_cast(showID,actID,role)

  • showID是一个外键,表示actID是actor的外键

recurring_cast(showID,episodeID,actID,role)

  • showID是一个外键,表示episodeID是一个外键 episode actID是演员的外键

客户(custID,fname,lname,email,creditcard,membersince,renewaldate,密码,用户名)

cust_queue(custID,showID,datequeued)

  • custID是客户的外键showID是显示的外键

观看(custID,showID,episodeID,datewatched)

  • custID是客户的外键
  • showID是显示的外键
  • (showID,episodeID)是剧集的外键
  • (custID,showID)是cust_queue的外键

所有' ID'是主键


我有一些问题我得到了,对于一些人,我不知道如何去做。 如:

查找至少一个节目的主要演员以及至少一个节目的定期演员中的所有演员。显示演员的名字,姓氏,演员在主要演员阵容中的节目标题,演员在演员阵容中的演出标题,以及演员扮演的角色每个节目。

我正在尝试:

{
    SELECT Actor.fname, Actor.lname, Shows.Title
    FROM Actor, Shows, Main_Cast, Recurring_Cast
    WHERE Actor.actID = Main_Cast.actID AND Actor.actID = Recurring_Cast.actID;
}

但我认为没错。任何想法??

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

SELECT Actor.fname, Actor.lname, Shows.Title
FROM Actor, Shows  AS sh
WHERE Actor.actID 
IN 
      (SELECT actID FROM Main_Cast
      WHERE sh.showID==Main_Cast.showID)
UNION
      (SELECT actID FROM Recurring_Cast
      WHERE sh.showID==Recurring_Cast.showID)

这将向您展示同一节目的主演员和经常演员的演员。你可以稍微编辑一下,得到你想要的东西。