Oracle Query для извлечения записей, когда выполняется одно из условий, но не когда оба - PullRequest
1 голос
/ 18 февраля 2012

У меня есть следующая таблица, и я хочу получить студентов (STUD_ID), которые взяли либо ENGLISH, либо SCIENCE. Если они взяли и АНГЛИЙСКИЙ, и НАУКУ, то не получите.

Итак, желаемый результат равен 101,102,104,106,107

Таблица на самом деле является представлением с первыми 2 столбцами из таблицы STUD_INFO, а столбец темы - из Вложенной таблицы в таблице STUD_INFO.

SELECT groupid, 
       Stud_id, 
       NST.Name
  FROM STUD_INFO, 
       TABLE(SUBINFO) NST

Может кто-нибудь помочь мне с запросом SQL? Интересная часть, когда я использую Тема = АНГЛИЙСКИЙ и Тема = Наука не получает никаких данных.

groupid Stud_id Subject
-------   -------   --------
1   101 ENGLISH
1   102 MATH
1   103 ENGLISH
1   103 SCIENCE
1   104 ENGLISH
1   104 MATH
1   105 PT
1   105 ENGLISH
1   105 SCIENCE
2   106 ENGLISH
2   107 SCIENCE
2   108 SCIENCE
2   108 ENGLISH

1 Ответ

4 голосов
/ 18 февраля 2012

Subject = ENGLISH and Subject = SCIENCE говорит: «Субъект должен быть АНГЛИЙСКИМ и НАУЧНЫМ одновременно », что никогда не может быть правдой.

select stud_id from your_view
where subject in ('ENGLISH', 'SCIENCE')
group by stud_id
having count(subject) = 1

Это работает для вас?

...