Сравнить значение подвыбора со значением в главном выборе - PullRequest
0 голосов
/ 06 февраля 2009

В MS Access у меня есть запрос, в котором я хочу использовать столбец во внешнем запросе в качестве условия во внутреннем запросе:

SELECT P.FirstName, P.LastName, Count(A.attendance_date) AS CountOfattendance_date,
       First(A.attendance_date) AS FirstOfattendance_date,
       (SELECT COUNT (*) 
          FROM(SELECT DISTINCT attendance_date 
                FROM tblEventAttendance AS B 
                WHERE B.event_id=8 
                  AND B.attendance_date >= FirstOfattendance_date)
       ) AS total
FROM tblPeople AS P INNER JOIN tblEventAttendance AS A ON P.ID = A.people_id
WHERE A.event_id=8
GROUP BY P.FirstName, P.LastName
;

Ключевым моментом является FirstOfattendance_date - я хочу, чтобы сравнение в глубине подвыбора использовало значение в каждой итерации основного выбора. Очевидно, что это не работает, оно запрашивает у меня значение FirstOfattendance_date, когда я пытаюсь его запустить.

Я бы хотел сделать это, не прибегая к VB-коду ... есть идеи?

Ответы [ 2 ]

1 голос
/ 06 февраля 2009

Как насчет:

SELECT 
     p.FirstName,
     p.LastName,
     Count(a.attendance_date) AS CountOfattendance_date,
     First(a.attendance_date) AS FirstOfattendance_date,
     c.total
FROM (
     tblPeople AS p 
INNER JOIN tblEventAttendance AS a ON 
     a.people_id = p.ID) 
INNER JOIN (SELECT people_id, Count (attendance_date) As total
            FROM (
                SELECT DISTINCT people_id,attendance_date
                FROM tblEventAttendance) 
            Group By people_id) AS c ON 
     p.ID = c.people_id
GROUP BY 
     p.ID, c.total;
0 голосов
/ 06 февраля 2009

Можете ли вы изменить

B.attendance_date> = FirstOfattendance_date

до

B.attendance_date> = Первый (A.attendance_date)

...