Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie danych z dwoch tabel jednoczesnie
spit
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 1.08.2005

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


Czesc,
Chce pobierac z dwoch tabel [biografia i muzycy] dane jednoczesnie [w jednym zapytaniu]. Napisalem taki kod:
  1. <?php
  2. SELECT a.*, SELECT b.* as muzycy FROM biografia a LEFT JOIN muzycy b ON (a.nazlnk = b.zespol)
  3. ?>
lecz niestety nie dziala, nie wiem co jest zle. Dane maja odpowiadac sobie w nast. sposob biografia.nazlnk = muzycy.nazwisko. Co robie zle?
Go to the top of the page
+Quote Post
mokry
post
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

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


  1. SELECT a.*, b.* FROM a LEFT JOIN b ON a.nazlnk = b.zespol;


Ten post edytował mokry 20.02.2007, 23:52:32
Go to the top of the page
+Quote Post
spit
post
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 1.08.2005

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


Nie wiem, nie dziala.

Wiec napisalem sobie taki kod:
  1. SELECT biografia.*, muzycy.* FROM biografia, muzycy WHERE biografia.nazlnk = muzycy.nazlnk AND nazlnk='$band'
ale dostaje blad "Column 'nazlnk' in where clause is ambiguous". Jak zrobic, by to co jest wybierane mialo w tabeli 'nazlnk' to co podaje w zmiennej $band?
Go to the top of the page
+Quote Post
maryaan
post
Post #4





Grupa: Zarejestrowani
Postów: 380
Pomógł: 2
Dołączył: 5.01.2007

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


musisz sprecyzowac z ktorej tabeli jest ostatni nazlnk, bo w tej chwili nie wiadomo i dlatego ww blad sie pojawia
Go to the top of the page
+Quote Post
spit
post
Post #5





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 1.08.2005

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


Dobra, jest tak
  1. SELECT biografia.*, muzycy.* FROM biografia, muzycy WHERE biografia.nazlnk = muzycy.nazlnk AND muzycy.nazlnk='$band'
i niby dziala, ale gdy jest wiecej niz jeden czlonek zespolu, to wszystko wyswietlane jest tyle razy ile ludzi w zespole. Jak sobie z tm poradzic?
Go to the top of the page
+Quote Post
nrm
post
Post #6





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


  1. SELECT * FROM biografia b, muzycy m WHERE b.nazlnk = m.nazlnk AND m.nazlnk = '$band' GROUP BY m.costam

tak z palca. zgrupuj to wg. jakiegoś unikalnego pola. nie orientuje się co tam robisz i co chcesz ale pewnie musisz zgrupować wg. jakiegoś zespołu.

Ten post edytował normanos 21.02.2007, 16:07:37
Go to the top of the page
+Quote Post
spit
post
Post #7





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 1.08.2005

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


Ma byc cos takiego:
Kod
Sklad
-muzyk
-muzyk
-muzyk
-muzyk

Historia zespolu
dluzszy tekst

I problem lezy w tym ze za kazdym nowym itemem 'muzyk' wyskakuje historia zespolu.
Go to the top of the page
+Quote Post
mysz
post
Post #8





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 26.08.2006
Skąd: Szczecin

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


Cytat(spit @ 21.02.2007, 15:53:51 ) *
  1. SELECT biografia.*, muzycy.* FROM biografia, muzycy WHERE biografia.nazlnk = muzycy.nazlnk AND muzycy.nazlnk='$band'
i niby dziala, ale gdy jest wiecej niz jeden czlonek zespolu, to wszystko wyswietlane jest tyle razy ile ludzi w zespole.


Bo dostajesz produkt kartezjański. Nie rób "niejawnych" joinów, tylko zastosuj left join.
  1. SELECT a.*, b.* FROM a LEFT JOIN b ON b.id = a.id WHERE a.id = 'cos'
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 17.09.2025 - 17:49