SQL - Создать запрос, который возвращает пары значений - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужно создать запрос, который возвращает пары авторов (имя и фамилия), которые написали книгу вместе.

Это таблицы:

АВТОР

orcid (PRIMARY KEY to identify AUTHOR)
name
surname

Книга

doi (PRIMARY KEY to identify book)
title

ПИСЬМА

orcid (foreign key references Orcid (Author)) 
doi (foreign key references Doi (Book))

Например

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

Извините, если я не ясно, но английский sh не мой родной язык

1 Ответ

0 голосов
/ 08 апреля 2020

Вы хотите самостоятельного присоединения. А потом еще присоединяется:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...