Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie tabel z warunkiem
Forum PHP.pl > Forum > Bazy danych > MySQL
sebad
Witam
Moje pytanie brzmi czy da się wykonać zapytanie łączące dane dwóch tabel w taki sposób aby wyciągnąć tylko maksymalną wartość z drugiej tabeli?
Np. W pierwszej tabeli mam dane pracowników w postaci id, imie, nazwisko itd, natomiast druga zawiera wpisy w postaci roku. Z tym że w drugiej tabeli może być kilka wpisów dotyczących tego samego id pracownika np: 1=>2010, 1=>2011, 1=>2012.
Ja chcę połączyć te dwie tabelki, ale w ten sposób żeby z drugiej wyciągnęło mi tylko maksymalną wartość roku jeśli istnieje. natomiast jeśli nie istnieje to wyciągało pustą wartość.
Mam nadzieję że zrozumieliście o co mi chodzi.

pozdrawiam
mambus
Możesz pokazać strukturę tych tabel ?
pmir13
Da się, ostatni rok wyciągamy dzięki MAX(), grupując po id_pracownika w tabeli z datami, tak przygotowany zestaw dołączamy do tabeli z pracownikami, potrzebując LEFT JOIN, bo może nie być wpisów dla niektórych pracowników.

Czyli na przykład:

  1. SELECT CONCAT(p.imie, ' ', p.nazwisko) AS pracownik, COALESCE(d.ostatni_rok,'brak') AS rok
  2. FROM pracownicy p
  3. LEFT JOIN
  4. ( SELECT id_pracownika, MAX(rok) AS ostatni_rok
  5. FROM daty
  6. GROUP BY id_pracownika ) d
  7. ON p.id = d.id_pracownika


Jak to działa: SQLFiddle
sebad
Rewelacja. Dokładnie o to mi chodziło. Widzę że język SQL ma spore możliwości. Dzięki wielkie za ekspresową reakcję. Pozdrawiam.
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.