MySQL łączenie tabel - ostatni wpis dla klucza pomocniczego

0

Witam.
Łącze trzy tabele

Tabela_1 - ID_t1 ; pozostałe_kolumny_t1
Tabela_2 - ID_t2 ; ID_t1 ; ID_t3 ; pozostałe_kolumny_t2
Tabela_3 - ID_t3 ; kolumna_treść_t3

Tabela_2 ma wiele wpisów dla ID_t1 i teraz chciałbym uzyskać wynik:

**pozostałe_kolumny_t1 ; kolumna_treść_t3 **

gdzie kolumna_treść_t3 będzie ostatnim z dodanych dla danego ID_t1

SELECT b.ID_t3, a.* FROM tabela_2 b LEFT JOIN tabela_1 a ON (a.ID_t1=b.ID_t1) GROUP BY b.ID_t1 desc

Ten SELECT działa OK i wyświetla faktycznie najmłodsze ID_t3 z tabeli_t2

jednak po połączeniu:
SELECT o.koluna_treść_t3, t.* FROM (SELECT b.ID_t3, a.* FROM tabela_2 b LEFT JOIN tabela_1 a ON (a.ID_t1=b.ID_t1) GROUP BY b.ID_t1 desc) t LEFT JOIN Tabela_3 o ON (o.ID_t3 = t.ID_t3)

widać** najstarsze ID_t3 z tabeli_t2 i co za ty idzie o.kolumna_treść_t3 też jest najstarsza.**
Ma ktoś pomysł dlaczego tak się dzieje i czy czasami nie przekombinowałem z tym zapytaniem.

Pozdrawiam i dziękuję za uwagę.

0

GROUP BY ... DESC?? Co to za wynalazek? Dziw że działa...

0

Też się zastanawiałem na tym, ale taką składnię zaproponowano tu:
http://forum.php.pl/index.php?showtopic=123154

I o dziwo faktycznie działa.

0
Marcin.Miga napisał(a):

GROUP BY ... DESC?? Co to za wynalazek? Dziw że działa...

Ciekawe, też tego nie znałem. Okazuje się, że nie jest to przypadkowe - przydaje się, jeśli przy grupowaniu używasz opcji WITH ROLLUP - wtedy nie możesz użyć ORDER BY:

http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html

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