选择出现在两个地方的条目

时间:2013-12-14 21:00:12

标签: sql select

这是架构:

CREATE TABLE AUTHOR (
    AID char(9), 
    Aname VARCHAR(10), 
    Occupation VARCHAR(10), 
    PRIMARY KEY(AID)
);

CREATE TABLE Book (
    ISBN CHAR(7), 
    Year NUMBER(4), 
    Title VARCHAR(20), 
    PRIMARY KEY(ISBN)
);

CREATE TABLE Paper (
    PID CHAR(4), 
    Title VARCHAR(20), 
    ISBN CHAR(7), 
    PRIMARY KEY (PID), 
    FOREIGNN KEY (ISBN) REFERENCES BOOK
);

CREATE TABLE WRITES (
    AID CHAR(9), 
    PID CHAR(4), 
    PRIMARY KEY (AD,PID), 
    FOREIGN KEY (AID) REFERENCES Author, 
    FOREIGN KEY(PID) REFERENCES Paper
);

为了找到论文出现在“人工智能”和“通用算法”这两本书中的作者的姓名,我应该执行什么SQL查询?

1 个答案:

答案 0 :(得分:0)

成套思考。您正在寻找作为A和论文作者集中的论文作者集中的作者:

select * from author
where aid in
(
  select aid from writes where pid in
  (
    select pid from paper where isbn in
    (
      select isbn from book where title = 'Artificial Intelligence'
    )
  )
)
and aid in
(
  select aid from writes where pid in
  (
    select pid from paper where isbn in
    (
      select isbn from book where title = 'Generic Algorithms'
    )
  )
);