Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] pobieranie danych z wielu tabel
Forum PHP.pl > Forum > Przedszkole
fifi
Witam Was serdecznie.

Chaciałbym przelistować moje wszystkie 3 tabele. Kategorie, podkategorie i artykuły w podkategoriach. Najlepiej by było, jakbym wykonał to w 1 zapytaniu, ale jak wykonuje:
  1. SELECT
  2. *
  3. FROM zlecenie_main LEFT JOIN zlecenie_categories ON (cat_main = main_id)
  4. LEFT JOIN zlecenie_arts ON (art_cat = cat_id)

to zaznacza ją sie wszystkie kategorie główne i w nich po jednej podkategorii i po jednym artykule sad.gif

niestety działa jak należy, kiry wykonuje zapytania rekurencyjnie:
  1. <?php
  2. $queryMain = mysql_query("SELECT * FROM zlecenie_main");
  3.  
  4. while($arrayMain = mysql_fetch_array($queryMain))
  5. {
  6. echo '<b>kategoria: '.$arrayMain['main_title'].'</b><br>';
  7.  
  8. $queryCats = mysql_query("SELECT * FROM zlecenie_categories WHERE cat_main = ".$arrayMain['main_id']."");
  9.  
  10. while($arrayCats = mysql_fetch_array($queryCats))
  11. {
  12. echo '&nbsp;&nbsp;&nbsp;&nbsp;<i>podkategoria: '.$arrayCats['cat_title'].'</i><br>';
  13.  
  14. $queryArts = mysql_query("SELECT * FROM zlecenie_arts WHERE art_cat = ".$arrayCats['cat_id']."");
  15.  
  16. while($arrayArts = mysql_fetch_array($queryArts))
  17. {
  18. echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;artykul: '.$arrayArts['art_title'].'<br>';
  19. }
  20. }
  21. }
  22. ?>

ale to nie jest najlepszy pomysł... więc moje pytanie jest takie:

czym ewentualnie zastąpić LEFT JOIN (nie UNIONEM bo to na to samo wychodzi tongue.gif ) żeby uzystakć powyższy efekt, bądź jakie inne zapytanie wykonać?

pozdrawiam smile.gif
Gość
Tak na marginesie to UNION i LEFT JOIN to calkiem co innego - poczytaj sobie w dokumentacji o krotkach wiszacych.
A tak na chlopski rozum - UNION bierze czesc wspolna kolumn 2 tabel, LEFT JOIN wszystkie kolumny laczy w jedna tabele.
Gość
to jakiego słowa kluczowego mam użyć?
Czadus
A jak w jednym zapytaniu pobrać dane z wielu tabel, które powiedzmy mają prawie takie same struktury, a wszystkie rekordy z tych tabel łączy fakt, że należą do jednego usera??

tabela 1: id, kto, (inne różne pola)
tabela 2: id, kto, (inne różne pola)

a ja za jednym zapytaniem chcę pobrać wszystkie ogłoszenia należące do tego samego usera, czyli np. kto='100'
Kojak
Struktura:

tabela: tab1
pola: id_tab1, kto, ...

tabela: tab2
pola: id_tab2, kto, ...

  1. SELECT tab1.id_tab1, tab2.id_tab2 FROM tab1, tab2 WHERE tab1.kto=tab2.kto
Czadus
To nie jest niestety poprawne rozwiązanie, bowiem powoduje ono złączenie tabel. A mi chodzi o wybranie wszystkich rekordów z kilku tabel dotyczących tego samego użytkownika.
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.