Как изолировать запрос, чтобы найти конкретные поля? - PullRequest
0 голосов
/ 16 мая 2018

Вот база данных, которую я использую: https://drive.google.com/file/d/1ArJekOQpal0JFIr1h3NXYcFVngnCNUxg/view?usp=sharing

Я пытаюсь создать запрос для вывода ученых (acnum), которые ТОЛЬКО интересует поля "Данные" (описание).

Я пробовал это:

select acnum
from interest
where upper(descrip) like '%DATA%';

Он частично работает, он находит ученых (acnum), которые заинтересованы в полях (descrip) с «Данными» в своих именах, но он также перечисляет ученых (acnum), которые имеют другие интересы помимо полей «Data», как я могу найти ученых (acnum), которые заинтересованы ТОЛЬКО в полях «Данные» (описание)?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Другой подход - если вы хотите больше колонок об академической - это not exists:

select a.*
from academics a
where not exists (select 1
                  from interest i
                  where a.acnum = i.acnum and upper(descrip) like '%DATA%'
                 );
0 голосов
/ 16 мая 2018

Чтобы получить ученых (acnum), которые заинтересованы ТОЛЬКО в полях «Данные» (описание) , вы можете использовать следующий запрос с некоторым агрегированием, чтобы удовлетворить ваши критерии

SELECT acnum
FROM interest
GROUP BY acnum
HAVING COUNT(*) = SUM(CASE WHEN UPPER(descrip) LIKE '%DATA%' THEN 1 ELSE 0 END)
...