Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-创建一个返回成对值的查询_Sql_Join_Subquery - Fatal编程技术网

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