SQL-创建一个返回成对值的查询
我必须创建一个查询,返回一对写了一本书的作者姓名 以下是表格: 作者 书 写 比如说SQL-创建一个返回成对值的查询,sql,join,subquery,Sql,Join,Subquery,我必须创建一个查询,返回一对写了一本书的作者姓名 以下是表格: 作者 书 写 比如说 BOOK TITLE = RED ROSE (DOI = A100) WRITTEN BY AUTHORS = X (ORCID = 2 ) AND Y (ORCID = 1) 我被困在这个问题上,这是我尝试过的,但我不知道如何只考虑两位作者 SELECT author.name, author.surname FROM author JOIN writes ON writes.orcid = author
BOOK TITLE = RED ROSE (DOI = A100)
WRITTEN BY AUTHORS = X (ORCID = 2 ) AND Y (ORCID = 1)
我被困在这个问题上,这是我尝试过的,但我不知道如何只考虑两位作者
SELECT author.name, author.surname
FROM author
JOIN writes ON writes.orcid = author.orcid
JOIN book ON writes.doi = book.doi
如果我不清楚,很抱歉,但英语不是我的母语您想要加入。然后是更多的连接:
SELECT a1.name, a1.surname, a2.name, a2.surname
FROM writes w1 JOIN
writes w2
ON w2.doi = w1.doi JOIN -- same book
author a1
ON a1.orcid = w1.orcid JOIN -- first author
author a2
ON a2.orcid = w2.orcid AND -- second author
a2.arcid < a1.arcid -- keep the pairs in order
谢谢你的解决方案!第四行只有一个小错误,但没有严重的w2.doi=w1.doi这是连接条件,再次感谢!
BOOK TITLE = RED ROSE (DOI = A100)
WRITTEN BY AUTHORS = X (ORCID = 2 ) AND Y (ORCID = 1)
SELECT author.name, author.surname
FROM author
JOIN writes ON writes.orcid = author.orcid
JOIN book ON writes.doi = book.doi
SELECT a1.name, a1.surname, a2.name, a2.surname
FROM writes w1 JOIN
writes w2
ON w2.doi = w1.doi JOIN -- same book
author a1
ON a1.orcid = w1.orcid JOIN -- first author
author a2
ON a2.orcid = w2.orcid AND -- second author
a2.arcid < a1.arcid -- keep the pairs in order