Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Jak pobrać wyniki z 2 tabel jednocześnie (łączenie wyników)
-Mielito-
post 27.05.2011, 22:47:29
Post #1





Goście







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ć)
Go to the top of the page
+Quote Post
-Mielito-
post 27.05.2011, 22:51:12
Post #2





Goście







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.
Go to the top of the page
+Quote Post
CuteOne
post 27.05.2011, 23:01:46
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  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
Go to the top of the page
+Quote Post
-Mielito-
post 28.05.2011, 20:59:31
Post #4





Goście







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ć ?
Go to the top of the page
+Quote Post
peter13135
post 28.05.2011, 21:26:58
Post #5





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


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]


--------------------
:)
Go to the top of the page
+Quote Post
CuteOne
post 29.05.2011, 06:18:09
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  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'


Ten post edytował CuteOne 29.05.2011, 06:19:28
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: 14.07.2025 - 10:17