select s.code, s.id
from subjects s
join courses c on (c.subject = s.id)
group by s.id
having count(*) > 25
except
select s.code, s.id
from subjects s
join courses c on (s.id = c.subject)
join course_staff cs on (cs.course = c.id);
Это возвращает результат, который я хочу, за исключением того, что строка select s.code, s.id
действительно должна быть select s.code, count(*)
. Я просто использую это как тест. Когда я использую код в примере, я получаю 4 кортежа, как и ожидалось, но когда я выключаю s.id
для count(*)
, я получаю ВСЕ кортежи с count & gt; 25 из предметной таблицы. Есть ли способ ТОЛЬКО отображать результаты подсчета, для которых возвращается код в примере?
2 ответа
Попробуйте что-то вроде этого
select s.code, count(*)
from subjects s
join courses c on (c.subject = s.id)
left join
(select s.code, s.id
from subjects s
join courses c on (s.id = c.subject)
join course_staff cs on (cs.course = c.id)) a
on a.code=s.code and a.id = s.id
where a.code is null
group by s.id
having count(*) > 25
Левое соединение двух таблиц (t1, t2) с нулевой проверкой на столбце t2 выберет все строки таблицы t1, где строки не совпадают с таблицей t2.
Возможно, потому, что вы аннулируете свое предложение except при замене s.id на count (*). Я думаю, вы должны каким-то образом включить свое предложение except в сам запрос.
Если я правильно читаю ваш запрос, это должно сработать:
select s.code, count(*)
from subjects s
join courses c on (c.subject = s.id)
where c.id not in (select cs.course from course_staff cs)
group by s.id
having count(*) > 25;
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.