baza danych: 1 do wielu, kryteria połączenia

0

Witam wszystkich,
mam nadzieję, że ktoś skróci moje męki i udzieli mi odpowiedzi, bądź naprowadzi mnie na rozwiązanie mojego problemu.
Mianowicie mam 2 tabele:

tabela1:
dane kontaktowe (id, imię, nazwisko, itp.)

tabela2:
dane historii połączeń z danym klientem (id, id_klienta (tabela1), data, status) - tych rekordów może być kilka do jednego klienta.

Chciałbym, wiedzieć jak zdefiniować zapytanie, aby wyświetlić listę wszystkich klientów złączoną z tabelą połączeń w taki sposób, aby wiersze zawierały tylko i wyłącznie 1 status z ostatniego połączenia z tabeli2...

np.
tabela1:
id=1, imie=jan, nazwisko=kowalski

tabela2:
id=1, id_klienta=1, data=2014-01-05, status=3
id=2, id_klienta=1, data=2014-01-04, status=1
id=3, id_klienta=1, data=2014-01-03, status=4
id=4, id_klienta=1, data=2014-01-02, status=2
id=5, id_klienta=1, data=2014-01-01, status=1

zamierzony efekt:
id=1, imie=jan, nazwisko=kowalski, status=3 (najnowszy wpis z tabeli2)

aktualnie mam coś takiego:

	
SELECT * FROM customers a
left outer JOIN calls b ON a.id = b.customer_id  
where ...
order by ...;

jednak to wywołanie powoduje wyświetlenie zdublowanych wartości z tabeli klientów...

Będę wdzięczny za pomoc, bo już wystarczająco dużo czasu na to straciłem,

Pozdrawiam

0
select * from tabela1 join tabela2 on tabela1.id=tabela2.id_klienta
where data=(select max(tabela2.data))
1
SELECT t.*, x.status FROM tabela t JOIN (SELECTid_klienta, MAx(status) status FROM tabela2 GROUP BY 1) x ON x.id_klienta=t.id_klienta
0

Dziękuje za zainteresowanie tematem.
Rzeczywiście złączenie następuje wg planu, jednak (zakładając, że dobrze to przeinaczyłem) wyświetlane są tylko rekordy posiadające dane z tabeli 2, a chciałbym, aby wylistowane były wszystkie z tabeli nr 1..

Marcin.Miga napisał(a):
SELECT t.*, x.status FROM tabela t JOIN (SELECTid_klienta, MAx(status) status FROM tabela2 GROUP BY 1) x ON x.id_klienta=t.id_klienta

temat opanowany, bardzo dziękuje pozdrawiam :)

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