У меня есть следующие таблицыболее простой SQL-запрос
- студентов (с.и.д., SNAME, возраст)
- курс (чид, CNAME, продолжительность)
- Записаться (SID, чид, дата)
Чтобы найти всех sid, кто прошел курсы, которые принял sid = 1.
select sid from enroll where cid in (select cid from enroll where sid=1)
group by sid having count(*)=(select count(*) from enroll where sid=1)
minus (select sid from student where sid=1);
- Что делает первый отсчет (*) относится к?
- Есть ли более простая версия запроса?
'COUNT (*)' означает сосчитать все строки. –
, который строит? результат 'select cid из регистрации, где sid = 1'? – John
В вашем случае кол-во (*) проверяет сидики с зарегистрированным количеством курсов, равным sid = 1 зарегистрированным подсчетом. –