Написание запроса выбора с использованием 2 таблиц и 2 условий - PullRequest
0 голосов
/ 06 октября 2019

У меня проблемы с написанием логики, чтобы увидеть, появляется ли идентификатор из одной таблицы 12 или более раз в другой таблице.

Вопрос задает вопрос: «Есть некоторые ученые, которые написали более 12 статей инекоторые академики интересуются областями, в названии которых есть слово «база данных». Укажите академический номер каждого академика, который удовлетворяет одному или обоим этим условиям. "

это то, что я написал до сих пор

SELECT acnum 
FROM academic 
WHERE acnum IN (
SELECT panum 
FROM paper 
WHERE title LIKE '%database%');

Также некоторая информация о связи / таблицах базы данных.

схема возможных таблиц:

AUTHOR( panum*, acnum* )
PAPER( panum , title)

Пример данных:

PAPER values(100, 'Intro to programming');
PAPER values(101, 'Intro to database systems');
PAPER values(102, 'Intro to database management');
PAPER values(103, 'Intro to computing');
PAPER values(104, 'Intro to database analysis');

AUTHOR values (101, 25);
AUTHOR values (102, 25);
AUTHOR values (103, 25);
AUTHOR values (104, 25);
AUTHOR values (105, 25);
AUTHOR values (106, 25);
AUTHOR values (107, 25);
... up until 12 that all have same acnum (25).

1 Ответ

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

Вы должны присоединиться к 5 таблицам и установить условия в пункте HAVING:

select ac.acnum 
from academic ac
left join author a on a.acnum = ac.acnum
left join paper p on p.panum = a.panum and p.title like '%database%'
left join interest i on i.acnum = ac.acnum
left join field f on f.fieldnum = i.fieldnum and f.title like '%database%'
group by ac.acnum
having 
  count(distinct p.panum) > 12
  or
  sum(f.title is not null) > 0

Если первое условие касается не академиков, которые написали как минимум 12 статей о 'database', но любая бумага, затем снимите условие:

and p.title like '%database%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...