Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak pobrać wyniki z 2 tabel jednocześnie (łączenie wyników)
Forum PHP.pl > Forum > Przedszkole
Mielito
Witam,

Pobieram dane z 2 tabel w taki sposób:

  1. $sql = 'SELECT nazwa, opis FROM `tabela1` WHERE id > 0;' ;
  2.  
  3.  
  4. $resultx = mysql_query($sql);
  5.  
  6.  
  7. if(mysql_num_rows($resultx) > 0) {
  8.  
  9.  
  10. while($row123 = mysql_fetch_assoc($resultx)) {
  11.  
  12.  
  13.  
  14. }
  15.  
  16. echo $nazwa . " - " . $opis;
  17.  
  18. }
  19.  
  20.  
  21.  
  22.  
  23.  
  24. [php]$sql = 'SELECT nazwa, opis FROM `tabela2` WHERE id > 0;' ;
  25.  
  26.  
  27. $resultx = mysql_query($sql);
  28.  
  29.  
  30. if(mysql_num_rows($resultx) > 0) {
  31.  
  32.  
  33. while($row123 = mysql_fetch_assoc($resultx)) {
  34.  
  35.  
  36.  
  37. }
  38.  
  39. echo $nazwa . " - " . $opis;
  40.  
  41. }


[/php]


W tym momencie chciałbym aby dane z obu tabel zostały połączone, tzn znajdowały się w jednej tablicy.
Jak to zrobić ?

(pewnie można to zrobić bezpośrednio z sql jak i połączyć wyniki po pobraniu osobnymi zapytaniami j/w, ale nie mogę sobie z tym poradzić)
Mielito
Właśnie zobaczyłem, że post niżej jest podobny temat :]
U mnie jednak sprawa jest trochę inna, gdyż struktura obu tabel, które chcę połączyć jest identyczna, więc pewnie da się to zrobić w jakiś
mniej skomplikowany sposób.
CuteOne
  1. SELECT t1.nazwa, t1.opis, t2.nazwa, t2.opis FROM tabela1 t1 LEFT JOIN tabela2 t2 ON(t1.id = t2.id) WHERE t1.id > 0
Mielito
Dzięki za przykład.
Mam jednak dalej problem, ponieważ chcę skumulować w jednej tablicy dane z 5 tabel.
Sądziłem, że jak dostanę wskazówkę jak połączyć 2 tabele to analogicznie zrobię to dla 5, ale w tym przypadku mam problem.

Chyba ciężko będzie to zrobić za pomocą zapytań sql.
Wydaje mi się, że trzeba skonstruować 5 zapytań i jakoś je połączyć w jedno.

Pytanie tylko, jak to zrobić ?
peter13135
left joinem możesz łączyć kilka tabel smile.gif
poza tym, może takie coś ?
[sql]select t1.*, t2.id, t3.name, t4.value from tabela1 as t1, tabela2 as t2, tabela3 as t3, tabela4 as t4 where t1.id = t3.id_czegośtam[/code]
CuteOne
  1. SELECT
  2. t1.nazwa, t2.opis, t3.wzor, t4.dlugopis
  3. FROM
  4. tabela1 t1
  5. LEFT JOIN tabela2 t2 ON(t1.id = t2.id)
  6. LEFT JOIN tabela3 t3 ON(t1.id = t3.id)
  7. LEFT JOIN tabela4 t4 ON(t1.id = t4.id)
  8. WHERE
  9. t1.id = 10

Cały sekret polega na znalezieniu wspólnego identyfikatora [to nie musi być id] dla tabeli "głównej" i tabel, które chcesz "podpiąć"

Możesz też wykorzystać łańcuch zależności - w tym wypadku chcesz pobrać nazwisko burmistrza stolicy znając tylko kraj
  1. SELECT
  2. b.nazwisko
  3. FROM
  4. kraje k
  5. LEFT JOIN miasta m ON(m.nazwa = k.stolica) //pobieramy dane dla miasta, które jest stolicą zapisaną w tabeli kraje
  6. LEFT JOIN burmistrzowie b ON(b.id_burmistrza = m.id_burmistrza) //pobieramy dane dla burmistrza, który jest zapisany w tabeli miasta
  7. WHERE
  8. k.name = 'Polska'
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.