Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][SQL] zapytanie do trzech tabel i warunek
roghatt
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


Jak wykonać zapytanie(przykładowe tabele):

Tabela1
ID_produktu
Nazwa_produktu
Cena_produktu


Tabela2
ID_Atrybutu
ID_produktu
Numer_atrybutu
Cena_atrybutu

Tabela3
ID_zamowienia
ID_produktu
Nazwa_produktu
Cena_finalowa

Wypisane mają być produkty, które zostały zamówione więc te które są w Tabela3
Niektóre produkty mają atrybuty a niektóre nie mają.
Jak produkt nie posiada atrybutu to w "Tabela1" Cena produktu = jakaś konkretna liczba.
Jeśli produkt ma atrybuty (dwa rodzaje produktu) to wtedy w "Tabela1" Cena produktu=0, a w "Tabela2" Cena_atrybutu=konkretna liczba

W skrócie robiłem tak:
  1. $wynik1= mysql_query ("SELECT * FROM Tabela1 WHERE ID_produktu=$ID_produktu");
  2. while($row=mysql_fetch_array($wynik1))
  3. {
  4. $products_id=$row['products_id'];
  5. $Cena_produktu=$row['Cena_produktu'];
  6.  
  7. if($Cena_produktu==0)
  8. {
  9. $wynik2= mysql_query ("SELECT * FROM Tabela3 WHERE ID_produktu=$ID_produktu");
  10. while($row=mysql_fetch_array($wynik2))
  11. {
  12. $products_name=$row['products_name'];
  13.  
  14. $wynik3= mysql_query ("SELECT * FROM Tabela2 WHERE ID_produktu=$ID_produktu AND Numer_atrybutu=3") //numer atrybutu wybierany przeze mnie w zaleznosci co chce wypisac
  15. while($row=mysql_fetch_array($wynik3))
  16. {
  17. $Cena_atrybutu=$row['Cena_atrybutu'];
  18. $Cena=$Cena_atrybutu;
  19. }
  20. }
  21.  
  22. }
  23. else
  24. {
  25. $wynik2= mysql_query ("SELECT * FROM Tabela3 WHERE ID_produktu=$ID_produktu");
  26. while($row=mysql_fetch_array($wynik2))
  27. {
  28. $Cena_finalowa=$row['Cena_finalowa'];
  29. $Nazwa_produktu=$row['Nazwa_produktu'];
  30. $Cena=$Cena_finalowa;
  31. }
  32. }
  33.  
  34. echo $Nazwa_produktu;
  35. echo "-";
  36. echo $Cena;
  37.  
  38.  
  39.  
  40. $cena_suma= $cena_suma+$Cena;
  41. }
  42. echo $cena_suma;


Coś namieszałem z warunkami bo źle mi wypisuje

Ten post edytował freelinkz 10.12.2010, 11:49:10
Go to the top of the page
+Quote Post
celbarowicz
post
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


ta sama nazwa produktu w tabeli1 i tabeli3 ? to jest nadmiar danych. pozdrawiam

Ten post edytował celbarowicz 10.12.2010, 12:07:20
Go to the top of the page
+Quote Post
roghatt
post
Post #3





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.03.2006

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


to akurat jest najmniej ważne, bo to nie ważne z której tabeli wyciągnę nazwę produktu, więc nie wiem po co o tym pisałeś (IMG:style_emoticons/default/winksmiley.jpg)

W tabeli1 jest dużo więcej danych, po prostu wypisałem dla przykładu.
Go to the top of the page
+Quote Post
celbarowicz
post
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 31
Dołączył: 30.03.2009
Skąd: Szczecin

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


kolego nie jest to co podaję optymalne rozwiązanie ,ale można je ulepszyć. to co podaję jest tylko wskazówką.

ustawiasz ręcznie id zamówienia(lub w pętli jeśli chcesz wypisać wszystkie pozycje-odpowiednie zapytanie o id zamówienia)
  1. $zam_nr=2;
  2.  
  3.  
  4.  
  5. $sql="SELECT
  6. a.Id_atrybutu,a.Id_produktu,a.Numer_atrybutu,a.Cena_atrybutu,b.Nazwa_produktu ,b.Cena_finalowa FROM tabela3 b LEFT JOIN tabela2 a ON b.Id_produktu=a.Id_produktu WHERE b.Id_zamowienia=".$zam_nr." ";
  7.  
  8. $result=mysql_query($sql) or die(mysql_error());
  9. echo $n=mysql_num_rows($result);echo '<br>';
  10.  
  11.  
  12. while($row=mysql_fetch_array($result)){
  13. echo $row[0]; echo '-'; echo $ip=$row[1]; echo '-'; echo $row[2]; echo '-'; echo $row[3];echo '-'; echo $row[4]; echo '-';echo '-'; echo $row[5]; echo '<br>';
  14. }
  15. echo '-------------->';echo $ip;
  16.  
  17. $sql="SELECT * FROM tabela1 WHERE Id_produktu=".$ip." ";
  18. $result2=mysql_query($sql) or die(mysql_error());
  19. while($row=mysql_fetch_array($result2)){ echo '<br>';
  20. echo $row[0]; echo '-'; echo $row[1]; echo '-'; echo $row[2]; }


sprawdź czy moje nazwy kolumn
zgadzają się z Twoimi
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: 23.08.2025 - 11:23