Coś jak ORDER w JOIN

1

Cześć, mam pytanie.
Są dwie tabele:

Tab1 (ID, status) -- i inne nieważne
Tab2(ID, tab1ID, employeeID, resumeDate) -- i inne nieważne

I teraz chcę tak te tabele połączyć, żeby z tab2 uzyskać tylko jeden rekord - ostatni względem resumeDate.

Czyli załóżmy, że tabela TAB1 wygląda tak:

ID     status
------------
1    |    0
2    |    1

a tabela tab2:

ID     tab1ID     employeeID     resumeDate     
-----------------------------------
1   |   1    |  10     |   2011-01-01 08:00:00
2   |   1    |  11     |   2011-01-01 09:00:00
3   |   2    |  15     |   2011-01-01 08:00:00

I chcę uzyskać taki widok:

IDtab1    employeeID     resumeDate
--------------------------
1   |   11   |   2011-01-01 09:00:00
2   |   15   |   2011-01-01 08:00:00

Wiem, że mogę to zrobić za pomocą zagnieżdżonego selecta:

SELECT tab1.ID, (select top 1 employeeID from tab2 where tab1ID = tab1.ID)

ale chciałbym to za pomocą joina. Da się? Jak?

0

Zakładając, że pole ID w tabela2 jest inkrementowane, próbowałbym w ten sposób (kod pisany "z palca" więc nie daje głowy za poprawność):

select B.ID, A.Status, B.employeeID, B.resumeDate from tablica2 B
inner join (select max(ID) from tablica2 group by employeeID) X on B.ID = X.ID 
inner join tablica1 A on B.tab1ID = A.ID
0

No niestety to rozwiązanie nie działa. Błąd: "No column was specified for column 1 of 'x'"

0

działa, trzeba tylko nadać nazwę kolumnie

SELECT B.ID, A.STATUS, B.employeeID, B.resumeDate FROM tablica2 B
INNER JOIN (SELECT MAX(ID) **ID** FROM tablica2 GROUP BY employeeID) X ON B.ID = X.ID 
INNER JOIN tablica1 A ON B.tab1ID = A.ID
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1