MySQL łączenie tabel - ostatni wpis dla klucza pomocniczego

Odpowiedz Nowy wątek
2015-01-02 21:49
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ę.

Pozostało 580 znaków

2015-01-03 09:50
0

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

Pozostało 580 znaków

2015-01-03 10:09
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.

Pozostało 580 znaków

2015-01-03 11:22
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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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