Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна омощь с запросом SQL

Sabik Mextiyev Ученик (44), на голосовании 3 года назад
Задание такое:
Написать функцию, возвращающую количество студентов, которые не брали книги.
Перед тем как создать функцию я сначала пишу запрос а потом кидаю его в функцию, так вот

Я подумал что для вывода тех студентов которые не брали книги можно сделать так
SELECT Students.Id, Students.FirstName, Students.LastName
FROM Students
JOIN S_Cards ON S_Cards.Id_Student != Students.Id

(Students - таблица студентов
S_Cards - таблица содержащая список студентов и взятые ими книги)
Сделав так я получаю 322 строки, что я делаю не так?
Голосование за лучший ответ
Драгомир Бутулисов Оракул (86592) 3 года назад
Зачем джойн? Вместо него вот:
WHERE Students.Id IS NOT NULL AND Students.Id NOT IN (SELECT DISTINCT S_Cards.Id_Student FROM S_Cards)

Если уверен что в поле Students.Id не может быть НУЛЛ то можно опустить проверку на нулл.
Sabik MextiyevУченик (44) 3 года назад
О спасибо вам. Про NOT IN не знал
myodo.ruМудрец (12806) 3 года назад
join в общем случае быстрее, потому как выполняется параллельно, в отличие от сабселекта.
myodo.ru, в скулайте where быстрее, потому как join транслируется в where конструкцию
Похожие вопросы