Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Optymalizacja zapytania
Forum PHP.pl > Forum > Przedszkole
Tomplus
Witam,

Chcialbym się dowiedzieć czy i jak można poprawić następujący kod:

  1. $z = "SELECT `id`,`home`,`away` FROM `wyniki` WHERE `kolejka`={$kolejka} ORDER BY `id` ";
  2. $wq = mysql_query($z);
  3. while($w = mysql_fetch_array($wq))
  4. {
  5. $h = mysql_fetch_array(mysql_query("SELECT `skrot` FROM `kluby` WHERE `id` = {$w['home']}"));
  6. $a = mysql_fetch_array(mysql_query("SELECT `skrot` FROM `kluby` WHERE `id` = {$w['away']}"));
  7. }


Mam tutaj 3 zapytania
Pętle która wyświetla wyniki oraz dwa zapytania które pobierają tylko jedną informacje "skrót" dla drużyny gospodarza i goscia.

Gdybym musiał pobrać tylko jedną z tych dwóch informacji to wykorzystałbym INNER JOIN, nawet wtedy potrafibym aby pobrało wpis tych dwóch klubów ale nie ma się pewności czy prawidłowo będzie przypisane home i away.

Czy jest to możliwe aby przy przypisać konkretną wartość z tabeli kluby do wartości z prefixem home lub away ?
home_skrot
ylk
To można zrobić jednym zapytaniem, np tak:
  1. SELECT w.id, w.home, w.away, k1.skrot AS skrot1, k2.skrot AS skrot2 FROM wyniki w JOIN kluby k1 ON w.home=k1.id JOIN kluby k2 ON w.away=k2.id WHERE w.kolejka='$kolejka' ORDER BY w.id ASC

Pisane z palca więc mogłem się walnąć ;P
Tomplus
Czyli po prostu podwójny JOIN ?
to nie może być takie proste... tongue.gif



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.