|
#1
|
|||
|
|||
Последняя дата
Всем привет!
у меня есть 2 таблицы, "сотрудники" и "аттестация", соответственно в одной содержатся данные сотрудников а в другой дата пройденных аттестаций. Вид связи соответственно один ко многим. Если каждый месяц проходит аттестация, соответственно для каждого сотрудника в таблице "аттестация" появляется новая запись. Вопрос: Как правильно формировать sql-запрос, так что бы при выводе для каждого работника выводилась только последняя аттестация? |
#2
|
|||
|
|||
Как-то так:
Код:
SELECT E.Name, Max(A.CheckDate) FROM Emploee E LEFT JOIN Attestation A ON E.ID = A.EmploeeID GROUP BY E.Name Писал навскидку, не проверял. |
#3
|
|||
|
|||
Спасибо, буду пробовать
|
#4
|
|||
|
|||
Попробуй еще так
Идея вот в чем. Сначала выполняется подзапрос, который выдает последнюю дату. Эта дата передается в основной запрос в качестве параметра. Работает. Но таблицу надо индексировать по дате, иначе будет все ОЧЕНЬ медленно Код:
SELECT P1.GosReestr, Naimen, Obozn, P1.Zavnum, P1.Reslt, P1.Plandat, W1.Kuda, F2.Short_Naimen, P1.Location, P1.Depart_Loc, P1.Sect_Loc, VidDocum, NumBlank, P1.Vlad, F1.Short_Naimen, P1.Depart_Vlad, DP1.Depart, P1.Sect_Pover, S1.Section FROM Nomenkl N1, Factories F1, Departs DP1, Sections S1, Pribory P1 LEFT OUTER JOIN Works W1 ON (W1.Dat = (SELECT Max(W2.Dat) FROM Works W2 WHERE (W2.GosReestr = P1.GosReestr) AND (W2.Zavnum = P1.Zavnum))) |