Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dołączenie dwóch tabel do zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
grzecho83
Witam, mam 3 tabele. Państwa, miasta i województwa. Potrzebuję wyświetlić listę państw i dołączyć do każdego państwa listę miast i województw, ale w osobnych wierszach. Mam takie zapytanie:
  1. SELECT nazwa_kraju,nazwa_miasta,wojewodztwo FROM `kraje` LEFT JOIN miasta ON miasta.id_kraju=kraje.id_kraju LEFT JOIN wojewodztwa ON wojewodztwa.id_kraju = kraje.id_kraju WHERE 1


wynik zapytania wygląda tak:

  1. | nazwa_kraju | Nazwa_miasta | wojewodztwo
  2. | polska | Kraków | lubelskie
  3. | polska | Warszawa | lubelskie
  4. | polska | Kraków | podkarpackie
  5. | polska | Warszawa | podkarpackie
  6. | rosja | NULL | NULL
  7. | niemcy | NULL | NULL
  8. | francja | NULL | NULL
  9. | hiszpania | NULL | NULL
  10. | słowacja | NULL | NULL


a chciałbym żeby wyszło tak:
  1. | nazwa_kraju | Nazwa_miasta | wojewodztwo
  2. | polska | Kraków | NULL
  3. | polska | Warszawa | NULL
  4. | polska | NULL | podkarpackie
  5. | polska | NULL | lubelskie
  6. | rosja | NULL | NULL
  7. | niemcy | NULL | NULL
  8. | francja | NULL | NULL
  9. | hiszpania | NULL | NULL
  10. | słowacja | NULL | NULL
trueblue
Rozbij to na dwa zapytania i połącz UNION.
nospor
Wojewodztwo masz joinnowac po miescie a nie po kraju.
grzecho83
Dzięki, jest bliżej ale nie do końca
  1. SELECT kraje.nazwa_kraju, miasta.nazwa_miasta FROM kraje LEFT JOIN miasta ON miasta.id_kraju=kraje.id_kraju UNION SELECT kraje.nazwa_kraju, wojewodztwa.wojewodztwo FROM kraje LEFT JOIN wojewodztwa ON wojewodztwa.id_kraju = kraje.id_kraju ORDER BY nazwa_kraju


Wynikowa tabela :
  1. | nazwa_kraju | Nazwa_miasta |
  2. | francja | NULL |
  3. | hiszpania | NULL |
  4. | niemcy | NULL |
  5. | polska | Warszawa |
  6. | polska | podkarpackie |
  7. | polska | Kraków |
  8. | polska | lubelskie |
  9. | rosja | NULL |
  10. | słowacja | NULL |


województwa wstawia do kolumny miasta, a chcę mieć trzy kolumny
trueblue
  1. SELECT nazwa_kraju, nazwa_miasta, NULL AS wojewodztwo ...
  2. UNION
  3. SELECT nazwa_kraju, NULL, wojewodztwo ...
grzecho83
  1.  
  2. SELECT kraje.nazwa_kraju, miasta.nazwa_miasta, NULL AS wojewodztwo FROM kraje LEFT JOIN miasta ON miasta.id_kraju=kraje.id_kraju UNION SELECT kraje.nazwa_kraju, NULL, wojewodztwa.wojewodztwo FROM kraje LEFT JOIN wojewodztwa ON wojewodztwa.id_kraju = kraje.id_kraju ORDER BY nazwa_kraju


  1. | nazwa_kraju | Nazwa_miasta | wojewodztwo
  2. | francja | NULL | NULL
  3. | hiszpania | NULL | NULL
  4. | niemcy | NULL | NULL
  5. | polska | Kraków | NULL
  6. | polska | Warszawa | NULL
  7. | polska | NULL | lubelskie
  8. | polska | NULL | podkarpackie
  9. | rosja | NULL | NULL
  10. | słowacja | NULL | NULL


to jest to czego szukałem. Niestety tabele użyte dla przykładu to jedynie przykład. docelowo będę potrzebował zapytania dla 4 różnych tabel. każda po 10 do 15 kolumn. zwykle wpisywałem SELECT * FROM i zapytanie było zwięzłe. No trudno, trzeba będzie się rozpisać dość szeroko. Dzięki wielkie za pomoc.
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-2024 Invision Power Services, Inc.