Здравствуйте. Требуется написать запрос, который по каждому студенту выводит количество всех зарегистрированных приказов (т.е. дата регистрации не должна быть пустой), а также количество зарегистрированных приказов, которые были произведены. Возможно ли вообще организовать это в один запрос? Проблема в том, что доступа к базе данных нету, поэтому даже проверить не получится.
Как я понял, в первом случае необходимо использовать агрегатную функцию count по полю ПриказыПоСтудентам.КодПриказа и группировку по полю ПриказыПоСтудентам.КодСтудента, и при этом проверить условие, чтобы поле Приказы.ДатаРегистрации для соответствующего приказа не имело значения NULL, но при этом нужно ещё поддерживать соответствие для кода приказа в таблице Приказы и для кода приказа в таблице ПриказыПоСтудентам (один приказ может касаться нескольких студентов).
SELECT DISTINCT ПриказыПоСтудентам.КодСтудента, COUNT(ПриказыПоСтудентам.КодПриказа)
FROM ПриказыПоСтудентам INNER JOIN Приказы ON ПриказыПоСтудентам.КодПриказа=Приказы.КодПриказа
WHERE(Приказы.ДатаРегистрации IS NOT NULL)
GROUP BY ПриказыПоСтудентам.КодСтудента
Даже если это правильно, то как выполнить вторую часть задания? Я думал, нужно делать так:
SELECT DISTINCT ПриказыПоСтудентам.КодСтудента, COUNT(ПриказыПоСтудентам.КодПриказа), COUNT(SELECT Приказы.КодПриказа WHERE Проеведен=1)
FROM ПриказыПоСтудентам INNER JOIN Приказы ON ПриказыПоСтудентам.КодПриказа=Приказы.КодПриказа
WHERE(Приказы.ДатаРегистрации IS NOT NULL)
GROUP BY ПриказыПоСтудентам.КодСтудента
Скриншот БД http://www.sql.ru/forum/1176642/problema-s-zaprosom