Проверьте, есть ли кортеж в каждом результате подзапроса (Oracle SQL) - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь найти каждую секцию, которая была проведена в каждой классной комнате, которая имеет более 130 мест. Прямо сейчас это просто находит все секции, которые были проведены по крайней мере в одном классе с более чем 130 мест.

select * 
from section 
where (building, room_number) in (select building,room_number 
                                  from classroom where capacity > 130)

Схема базы данных

  • классная комната (здание, номер комнаты, вместимость)
  • секция (course_id, sec_id, семестр, год, здание, номер комнаты, time_slot_id)

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Вы можете использовать `не существует

select * 
from section s 
where not exists (select 1
                  from classroom c
                  where c.building = s.building and 
                        c.room_number = s.room_number and
                        c.capacity <= 130
                 ) ;
0 голосов
/ 13 февраля 2020

Вы можете использовать для достижения этого:

    select sec_id, count(*) 
    from section a inner join
    (
     select building, room_number
     from 
     ( 
      select distinct building,room_number 
       from classroom where capacity > 130
     ) a
    )b on a.building = b.building  and a.room_number = b.room_number

and 

    having count(*) = ( select count(*) 
                        from
                        (select distinct building,room_number 
                        from classroom where capacity > 130)a
                       )
    Group by sec_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...