Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łączenie tabel z warunkiem
sebad
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
mambus
post
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.11.2010

Ostrzeżenie: (0%)
-----


Możesz pokazać strukturę tych tabel ?
Go to the top of the page
+Quote Post
pmir13
post
Post #3





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

Ostrzeżenie: (0%)
-----


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

Ten post edytował pmir13 20.09.2013, 10:57:18
Go to the top of the page
+Quote Post
sebad
post
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 23:08