Grzyw
3.07.2009, 07:28:30
Załóżmy, że mam tabelę users m.in. z PK id_user i innymi danymi oraz tabelę events z polami id_event (PK), added, id_user (FK do users).
Chciałbym wyciągnąć dane usera wraz z informacjami o ostatnim evencie tego usera. LEFT JOIN zwróci mi w tym przypadku tyle rekordów tego samego usera, ile było eventów. W jaki spsoób "dokleić" do danych usera info o tylko jednym, ostatnim (sortowanie po polu added bądź najwyższy id_event) evencie?
Spawnm
3.07.2009, 07:32:21
np:
ORDER BY tabela.pole DESC LIMIT 1
Grzyw
3.07.2009, 07:49:33
Cytat(Spawnm @ 3.07.2009, 08:32:21 )

np:
ORDER BY tabela.pole DESC LIMIT 1
Działałoby, gdybym wyciągał jednego usera. Niestety, tworzę widok z wieloma userami.
Rozwiązałem tak:
(...)
LEFT JOIN events ON (user.id_user=event.ref_user AND event.id_event=(SELECT max(id_event FROM event WHERE ref_user = user.id_user))
(...)
Wrzuć to w subselecta:
SELECT * FROM (SELECT ... ) ORDER BY pole;