Напишите запрос на выборку, который отображает «id», если другой «id» имеет такой же «panum» - PullRequest
0 голосов
/ 06 октября 2019

Вопрос, на который мне нужно ответить:

"Показать список ученых, которые сотрудничали с другим ученым, на нескольких листах. Перечислите отдельные пары ученых в каждой строке. Укажите только их академические номера. не перечислять дублирующиеся пары (например, 56,113 и 113,56 являются дублирующимися парами) "

До сих пор я искал способ написать запрос, который отображает дубликат" panum "(номер бумаги), но я не могу найти что-либо в ИнтернетеНе совсем уверен, что искать, чтобы быть честным

Некоторая полезная информация:

Relation Schema:
ACADEMIC( acnum , deptnum*, famname, givename, initials, title)
AUTHOR( panum*, acnum* )
PAPER( panum , title)

Sample Data:
ACADEMIC values (221, 116, 'Korman', 'Robert', 'R J', 'Dr');
ACADEMIC values (222, 119, 'Morse', 'Frank', 'F J', 'Prof');
ACADEMIC values (223, 119, 'Bierling', 'Ken', 'K R E', 'Mr');
ACADEMIC values (224, 119, 'Ganguly', 'Ingo', 'I D R', 'Mr');
ACADEMIC values (225, 119, 'McAleer', 'David', 'D J G', null);

AUTHOR values (3001, 221);
AUTHOR values (3004, 222);
AUTHOR values (3001, 223);
AUTHOR values (3005, 224);
AUTHOR values (3004, 225);

PAPER values (3001, 'Speedup in parallel algorithms for adaptive quadrature');
PAPER values (3002, 'Odd-even reduction for banded linear equations');
PAPER values (3003, 'Estimating the mean of a correlated binary sequence');
PAPER values (3004, 'Optimality of the Fast Fourier transform');
PAPER values (3005, 'Time bounded random access machines with parallel processing');

, если мы используем пример данных в качестве примера. он должен выводить акнум тех, кто работал на одной и той же бумаге вместе.

1 Ответ

1 голос
/ 06 октября 2019

Вам необходимо самостоятельное соединение таблицы AUTHOR, GROUP BY пары учёных из каждой копии таблицы и установите условие в предложении HAVING:

select a1.acnum Academic1, a2.acnum Academic2
from author a1 inner join author a2
on a2.panum = a1.panum and a1.acnum < a2.acnum
group by a1.acnum, a2.acnum
having count(*) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...