Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dołączenie dwóch tabel do zapytania
grzecho83
post 26.06.2020, 08:16:06
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 31.10.2011

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


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
Go to the top of the page
+Quote Post
trueblue
post 26.06.2020, 08:39:30
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Rozbij to na dwa zapytania i połącz UNION.


--------------------
Go to the top of the page
+Quote Post
nospor
post 26.06.2020, 09:09:19
Post #3





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Wojewodztwo masz joinnowac po miescie a nie po kraju.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
grzecho83
post 26.06.2020, 09:31:41
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 31.10.2011

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


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

Ten post edytował grzecho83 26.06.2020, 09:33:08
Go to the top of the page
+Quote Post
trueblue
post 26.06.2020, 09:36:34
Post #5





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


  1. SELECT nazwa_kraju, nazwa_miasta, NULL AS wojewodztwo ...
  2. UNION
  3. SELECT nazwa_kraju, NULL, wojewodztwo ...


--------------------
Go to the top of the page
+Quote Post
grzecho83
post 26.06.2020, 09:57:36
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 31.10.2011

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


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

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 20:45