Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Złączenie lewe z tylko jednym wynikiem
Forum PHP.pl > Forum > Przedszkole
Grzyw
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
np:
  1. ORDER BY tabela.pole DESC LIMIT 1
Grzyw
Cytat(Spawnm @ 3.07.2009, 08:32:21 ) *
np:
  1. 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:
  1. (...)
  2. 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))
  3. (...)
erix
Wrzuć to w subselecta:
  1. SELECT * FROM (SELECT ... ) ORDER BY pole;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.