Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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
 
Start new topic
Odpowiedzi (1 - 7)
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


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
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


--------------------
Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
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'


--------------------
urzenia.net
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 Aktualny czas: 21.08.2025 - 06:12