Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie wartości z 2 tabel jednocześnie
Forum PHP.pl > Forum > Bazy danych > MySQL
MateuszRyaN
Witam, mam 2 tabele:
"kontrahenci"
  1. +----------------+------------------+
  2. | id_kontrahenta | kontrahent_nazwa |
  3. +----------------+------------------+
  4. | 1 | firma_1 |
  5. | 2 | firma_2 |
  6. | 3 | firma_3 |
  7. +----------------+------------------+

"cennik"
  1. +----+----------------+--------+----------------+
  2. | id | id_kontrahenta | cena | artykul |
  3. +----+----------------+--------+----------------+
  4. | 1 | 1 | 11.00 | Ręczniki |
  5. | 2 | 1 | 22.00 | Szmaty |
  6. | 3 | 1 | 33.00 | Obrusy |
  7. | 4 | 1 | 44.00 | Poszwy |
  8. | 7 | 2 | 111.00 | Kołddry |
  9. | 8 | 2 | 222.00 | Poduszki |
  10. +----+----------------+--------+----------------+


Próbuje uzyskać z tego taki efekt:

firma_1
Ręczniki 11.00
Szmaty 22.00
Obrusy 33.00
Poszwy 44.00

firma_2
Kołdry 111.00
Poduszki 222.00

Próbowałem to zrobic na jednym zapytaniu, kombinowałem z joinem ale coś nie wyszło...
  1. SELECT kontrahenci.id_kontrahenta, kontrahenci.kontrahent_nazwa,
  2. cennik.id_kontrahenta, cennik.artykul, cennik.cena
  3. FROM kontrahenci JOIN cennik ON kontrahenci.id_kontrahenta = cennik.id_kontrahenta

Ostatecznie mam na 2 zapytaniach...ale wyświetla mi również na samym dole firma_3 (który jest pusty), nie zawiera artykułów, a chce zeby pokazywało mi tylko te firmy które posiadają artykuły. Kod:
  1. $query1 = mysql_query("SELECT id_kontrahenta, kontrahent_nazwa FROM kontrahenci ORDER BY kontrahent_nazwa");
  2. while ( $row1 = mysql_fetch_array($query1)) {
  3. $query2 = mysql_query("SELECT artykul,cena FROM cennik WHERE id_kontrahenta='".$row1['id_kontrahenta']."'");
  4. echo $row1['kontrahent_nazwa'].'<br><br>';
  5. while ( $row2 = mysql_fetch_array($query2)) {
  6. echo $row2['artykul'].' '.$row['cena'].'<br>';
  7. }
  8. }

Podejrzewam że musi to być zrobione tym joinem w jednym zapytaniu, ale nie umiem sobie poradzić. Prosze o pomoc.
Pozdrawiam.

droslaw
Cytat
Próbowałem to zrobic na jednym zapytaniu, kombinowałem z joinem ale coś nie wyszło...

Co nie wyszło, bo to zapytanie wygląda mi na dobre. Zwraca złe wyniki, serwer zgłasza błąd? Opisz problem dokładniej.
Mechanikzsz
Hello,

Mam podobny Problem:

  1. $result2 = mysql_query("SELECT * FROM `SHIP` ORDER BY ID asc;");
  2. while($ds = mysql_fetch_array($result2)){
  3. echo '<a class="tip_trigger" href="#'.$ds['ID'].'" style="display: '.$ds['DISPLAY'].';" >';
  4. echo '<img src="statki/'.$ds['ID'].'.jpg"><span class="tip"><img src="miniatury/'.$ds['LOCATION'].''.$ds['ID'].'/image/image 1'.$ds['TYPE'].'">';
  5. echo '<img src="miniatury/'.$ds['LOCATION'].''.$ds['ID'].'/image/image 09'.$ds['TYPE'].'">';
  6. echo '<p class="shipdesign">';
  7. echo $ds['SHIPDESIGN'];
  8.  
  9. $wynik = mysql_query("SELECT * FROM `BONUSY` WHERE `DESIGNID` = '".$ds['id']."'");
  10. while($as = mysql_fetch_array($wynik)){
  11. echo '<p>'.$as['VALUE'].' '.$as['MODPARAMETERE'].' '.$as['MODTYPE'].'</p></br>';
  12. }
  13.  
  14. echo '</p></span></a>';
  15. }
  16. ?>



Gdy zmienię:
  1. $wynik = mysql_query("SELECT * FROM `BONUSY` WHERE `DESIGNID` = '.$ds['id'].'");


wyskakuje błąd Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /virtual/sea-fight.cba.pl/baza.php on line 62

Gdy wstawię jakąś liczbę zamiast $ds['id'] skrypt działa ;/
  1. $wynik = mysql_query("SELECT * FROM `BONUSY` WHERE `DESIGNID` = '380'");
Jakieś propozycję jak to rozwiązać ? smile.gif


Problem rozwiązany smile.gif

  1. $result2 = mysql_query("SELECT * FROM `SHIP` ORDER BY ID asc;");
  2. while($ds = mysql_fetch_array($result2)){
  3. echo '<a class="tip_trigger" href="#'.$ds['ID'].'" style="display: '.$ds['DISPLAY'].';" >';
  4. echo '<img src="statki/'.$ds['ID'].'.jpg"><span class="tip"><img src="miniatury/'.$ds['LOCATION'].''.$ds['ID'].'/image/image 1'.$ds['TYPE'].'">';
  5. echo '<img src="miniatury/'.$ds['LOCATION'].''.$ds['ID'].'/image/image 09'.$ds['TYPE'].'">';
  6. echo '<p class="shipdesign">';
  7. echo $ds['SHIPDESIGN'];
  8. echo '</br>';
  9.  
  10. $wynik = mysql_query("SELECT * FROM `BONUSY` WHERE `DESIGNID` BETWEEN 1 AND 500");
  11. while($as = mysql_fetch_array($wynik)){
  12.  
  13. if($ds['ID']===$as['DESIGNID'])
  14. { echo '<span>'.$as['VALUE'].''.$as['MODPARAMETER'].' '.$as['MODTYPE'].'</span></br>';
  15. }
  16. }
  17.  
  18. echo '</p></span></a>';
  19. }
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.