Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Połączenie 3 tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
wężyk
Witajcie mam mały problem z zapytaniem do bazy danych a dokładniej chodzi mi oto, że chce z trzech tabel wybrac odpowiednie rekordy w jednym zapytaniu
Napisałem takie zapytanie:
  1. SELECT id_zamowienia.produkty_zamowienia,ilosc.produkty_zamowienia,
  2. cena_produktu.produkty_zamowienia,idtowaru.produkty_zamowienia,
  3. idtowaru.towary,nazwa.towary,cena.towary,nazwa_uz.zamowienia, wartosc.zamowienia,DATA.zamowienia,stan_zam.zamowienia,
  4. dos_imie.zamowienia,dos_nazwisko.zamowienia,dos_adres.zamowienia,
  5. dos_miasto.zamowienia,dos_telefon.zamowienia,
  6. dos_wojewodztwo.zamowienia,
  7. dos_kod_pocztowy.zamowienia,
  8. forma_dostawy.zamowienia,ilosc_towarow.zamowienia
  9. FROM produkty_zamowienia,zamowienia,towary WHERE produkty_zamowienia.idzamowienia=zamowienia.idzamowienia AND towary.idtowaru=produkty_zamowienia.idtowaru LIKE '%$idzamowienia%'

ale w wyniku dostaje komunikat błendu(mysql_error()) Query was empty niebardzo wiem czy to zapytanie jes poprawnie zformułowane.
Za pomoc dziękuje. ohmy.gif
nospor
Cytat
SELECT id_zamowienia.produkty_zamowienia,ilosc.produkty_zamowienia,....
Już tutaj ci się powaliło. Najpierw jest nazwa tabeli a potem nazwa kolumny, czyli np: produkty_zamowienia.id_zamowienia
wężyk
zmieniłem ale niestety nic nie pomogło nadal jest Query was empty
nospor
A możesz to pokazać po zmianach? POkaż jako kawałek Twojego kodu php, bo widzę że tam zmiennej używasz.
wężyk
Ok zaden problem
  1. <?php
  2.  
  3. if(!lacz_bd())echo('Nie mozna połączyć sie z bazą danych mysql');
  4. $zapytanie=&#092;"SELECT produkty_zamowienia.id_zamowienia
  5. ,produkty_zamowienia.ilosc,
  6. produkty_zamowienia.cena_produktu,produkty_zamowienia.idtowaru,
  7. towary.idtowaru,towary.nazwa,towary.cena,zamowienia.nazwa_uz,
  8. zamowienia.wartosc,zamowienia.data,zamowienia.stan_zam,
  9. zamowienia.dos_imie,zamowienia.dos_nazwisko,zamowienia.dos_adres,
  10. zamowienia.dos_miasto,zamowienia.dos_telefon,
  11. zamowienia.dos_wojewodztwo,
  12. zamowienia.dos_kod_pocztowy,zamowienia.forma_dostawy,
  13. zamowienia.ilosc_towarow FROM produkty_zamowienia,zamowienia,towary WHERE produkty_zamowienia.idzamowienia=zamowienia.idzamowienia 
  14. and
  15.  towary.idtowaru=produkty_zamowienia.idtowaru LIKE '%$idzamowienia%'&#092;";
  16.  
  17. $wynik=mysql_query($zampytanie);
  18.  
  19. if(!$wynik) printf(&#092;"Nie mozna wykonac zapytania:\" %s, mysql_error());
  20.  
  21. while($row=mysql_fetch_array($wynik))
  22. {
  23.     //tu kod do wyswietlenia rekordow
  24. }
  25.  
  26. ?>
nospor
Ostatnia linijka zapytania:
towary.idtowaru=produkty_zamowienia.idtowaru LIKE '%$idzamowienia%'";
Te LIKE to czego ma sięodnosić? musisz określić kolumnę dla like, bo tutaj jej nie określasz
wężyk
$idzamowienia wysyłam z pliku wczesniejszego
  1. <?php
  2.  
  3. echo&#092;"<a href=faktora.php?idzamowienia=\".$idzamoweinia.\">$idzamowienia.\"</a>\"
  4.  
  5. ?>

I chce zyby zapomoca tego zapytania wyswietlic wszystkie wybrane rekordy ale
  1. LIKE '%idzamowienia%'

musi sie rownac temu ide ktore było wczesniej przesłane
Sory jest mi to troche trudno wytulmaczyc szkoda ze niemoge tego pokazac było by łatwiej
nospor
Nie zrozumiales mnie. Chodzi mi oto, że ty nie określasz kolumny, której like ma dotyczyć.
Przyklad: ...where kolumna like '%costam%'
A u ciebie jest: ...where like '%costam%'
Widzisz różnicę? Brakuje ci nazwy kolumny przed like. U ciebie przed like jest warunek: .... towary.idtowaru=produkty_zamowienia.idtowaru
a powinno być:
....towary.idtowaru=produkty_zamowienia.idtowaru and jakaskolumna LIKE '%$idzamowienia%'
wężyk
czyli teraz to zapytanie powinno wygladac mniejwiecej tak?
  1. <?php
  2.  
  3. $zapytanie=&#092;"SELECT produkty_zamowienia.id_zamowienia,produkty_zamowienia.ilosc,
  4. produkty_zamowienia.cena_produktu,produkty_zamowienia.idtowaru,
  5. towary.idtowaru,towary.nazwa,
  6. towary.cena,zamowienia.nazwa_uz,
  7. zamowienia.wartosc,zamowienia.data,
  8. zamowienia.stan_zam,zamowienia.dos_imie,zamowienia.dos_nazwisko,
  9. zamowienia.dos_adres,zamowienia.dos_miasto,zamowienia.dos_telefon,
  10. zamowienia.dos_wojewodztwo,zamowienia.dos_kod_pocztowy,
  11. zamowienia.forma_dostawy,zamowienia.ilosc_towarow FROM produkty_zamowienia,zamowienia,towary WHERE produkty_zamowienia.idzamowienia=zamowienia.idzamowienia and towary.idtowaru=produkty_zamowienia.idtowaru and 
  12. zamowienia.idzamowienia LIKE '%$idzamowienia%'&#092;";
  13.  
  14. ?>
nospor
Tak
wężyk
Ale nadal nie działa cały czas ten sam bład ale zapytanie jest raczej w pozadku dlatego ze gdy wykonałem je w phpMyAdmin nie dostałem błedu zapytanie sie wykonało
nospor
Spójrz na te linijki:
  1. <?php
  2.  
  3. $zapytanie=&#092;"....\";
  4. $wynik=mysql_query($zampytanie);
  5.  
  6. ?>

Widzisz błąd? Zapytanie walisz do zmiennej $zapytanie, a do mysql_query walisz zmienną $zampytanie. To duża różnica winksmiley.jpg

Za 5 minut spadam domciu, więc do jutra
wężyk
Dzieki ci jak niewiem co bez ciebie niedał bym rady pozdrowionka i jeszcdze raz dziekuje
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.