2013-07-03 8 views
1

У меня есть два запроса, которые я хочу, чтобы объединить в один в Microsoft Access 2003.Объединение нескольких запросов в одном в доступе

SELECT AttendanceQuery.AttendDate, Count(*) AS Absent 
FROM AttendanceQuery 
WHERE (((AttendanceQuery.Present)=False)) 
GROUP BY AttendanceQuery.AttendDate; 

SELECT AttendanceQuery.AttendDate, Count(*) AS Enrollment 
FROM AttendanceQuery 
GROUP BY AttendanceQuery.AttendDate; 

Один показывает общее число записей для каждой даты, а другие показывают те, которые отмечено отсутствующим.

+0

Хотите, чтобы эти два запроса обновлялись в одну таблицу? И вы хотите, чтобы он показывал все записи, и для этих записей также отображаются те, которые отмечены отсутствующими? – Grant

ответ

0

Используйте свои 2 запроса в качестве подзапросов. LEFT JOIN подзапрос зачисления в подзапрос абзацев ... который вернет строки для всех значений AttendDate независимо от того, были ли эти даты отсутствовали.

SELECT e.AttendDate, e.Enrollment, a.Absent 
FROM 
    (
     SELECT a1.AttendDate, Count(*) AS Enrollment 
     FROM AttendanceQuery AS a1 
     GROUP BY a1.AttendDate 
    ) AS e 
    LEFT JOIN 
    (
     SELECT a2.AttendDate, Count(*) AS Absent 
     FROM AttendanceQuery AS a2 
     WHERE a2.Present=False 
     GROUP BY a2.AttendDate 
    ) AS a 
    ON e.AttendDate = a.attendDate; 

Если вы будете запускать этот запрос из рамок сеанса доступа, вы можете использовать Nz(a.Absent, 0) для отображения Null Absent значения как ноль. Если вы запустите запрос из внешнего Access, используйте IIf(a.Absent Is Null, 0, a.Absent)