Максимальная дата для каждого работника - PullRequest
2 голосов
/ 28 апреля 2011

Рассмотрим две таблицы. Рабочий стол имеет поля типа W_ID, W_Name. Таблица курса имеет поля типа C_ID, C_Name, C_Date.

Работник может пройти много курсов, а курс - много работников. Следовательно, между этими двумя таблицами существует отношение многих ко многим. Разбейте множество на множество и создайте новую таблицу под названием Takes, которая состоит из внешних ключей W_ID и C_ID.

Вот вопрос: я хочу узнать список всех работников и их последний курс. Например, если W_ID = 1, взяли C_Date 20/01/2010 и C_Date 25/10/2010 и C_Date 20/12/2010.

Тогда требуемый результат:

W_ID     C_Date
1        20/12/2010
2
3
4

Редактировать

Я хочу найти максимальную дату прохождения курса каждым работником, поскольку работники прошли бы много курсов. Я студент по бизнесу, поэтому я не могу использовать команду INNER JOIN. IN можно использовать вместо?

Я использую свой SQL в Microsoft Access

Ответы [ 2 ]

3 голосов
/ 28 апреля 2011
SELECT  w.w_id, MAX(c.c_date)
FROM    worker w
LEFT JOIN
        worker_course wc
ON      wc.w_id = w.w_id
LEFT JOIN
        course с
ON      c.c_id = wc.c_id
GROUP BY
        w.w_id

или это:

SELECT  w.w_id, MAX(c.c_date)
FROM    course с
JOIN    worker_course wc
ON      wc.c_id = c.c_id
RIGHT JOIN
        worker w
ON      w.w_id = wc.w_id
GROUP BY
        w.w_id
0 голосов
/ 28 апреля 2011
select W_ID,C_ID,max(C_Date)
from(select W_ID,C_ID,C_Date
    from worker
    join takes using (W_ID)
    join course using (C_ID)
)wc
group by W_ID,C_ID;
...