2015-01-31 1 views
0

Как сделать запрос, чтобы узнать, прошел ли студент или нет, где у каждого ученика десять предметов и степень прохождения для каждого предмета: (>49)
Студент, который должен пройти, имеет пройти по всем предметам. Любая помощь, пожалуйста?Запрос для студентов, прошедших и не прошедших

+0

Создайте запрос GROUP BY, который вычисляет количество неудавшихся предметов для каждого ученика: 'Count (IIf ([grade]> 49, Null, 1)' Прошедшие студенты - это те, для которых это число равно нулю. – HansUp

+0

@HansUp, Просьба, где я должен поместить этот код? в поле критериев? – FSm

+0

Можете ли вы создать запрос GROUP BY в конструкторе запросов Access? Я намеревался, что выражение 'Count' быть в предложении SELECT 'запроса --- список выражений поля, которые отображаются в виде столбцов в результатах запроса. После этого вы укажете это выражение в поле критериев столбца и введите' 0'. Это имеет смысл для вас? – HansUp

ответ

1

Используйте GROUP BY запрос для подсчета количества предметных отказов для каждого студента:

Count(IIf(q.Total > 49, Null, 1)) 

В конечном итоге вы хотите увидеть только студент, которые прошли все свои предметы, а это значит, их количество отказов равно нуль. Поэтому включите это условие в запрос HAVING.

SELECT 
    q.StudentsID, 
    Count(IIf(q.Total > 49, Null, 1)) AS CountOfFailures 
FROM QueryTotalGraedFirstCourse AS q 
GROUP BY q.StudentsID 
HAVING Count(IIf(q.Total > 49, Null, 1)) = 0; 

Вы можете приступить к построению этого запроса в Design Design Design Design Access. Укажите таблицу, выберите поля и настройте основные данные GROUP BY в Design View. Затем вы можете переключиться на SQL View, чтобы включить выражение IIf в Count.

Вот мои данные образца для QueryTotalGraedFirstCourse. Чтобы это было просто, я включил только 2 предмета на одного учащегося.

StudentsID subject_id Total 
---------- ---------- ----- 
     1   1 90 
     1   2 85 
     2   1 65 
     2   2 30 
     3   1 40 
     3   2 35 

Основываясь на описании, «прошли» не означает, что не непроходной балл для любого предмета, так что только StudentsID 1 из моих выборочных данных, передаваемых. Это результат моего запроса, используя выборку данных, и испытано в Access 2010:

StudentsID CountOfFailures 
---------- --------------- 
     1    0 

Если вы хотите увидеть все студент, а не только тех, кто прошел, просто удалите пункт HAVING.

+0

возвращает таблицу двух пустых столбцов.Нет учениковID нет. Кстати, что означает «q»? – FSm

+0

'q' является просто псевдонимом для имени таблицы. Мне это нравится, потому что он намного короче, чем полное имя таблицы везде. Но вам не нужно использовать псевдоним, если вам это не нравится. – HansUp

+0

Я использовал ваш код, но не приносит никаких результатов :( – FSm

Смежные вопросы