Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Optymalizacja kodu
Forum PHP.pl > Forum > Przedszkole
adi456
Witam, mam taki przykład

  1. $query = mysql_query("SELECT * FROM test LIMIT 1000") or die(mysql_error()); //33,474 rekordów
  2. while ($row = mysql_fetch_assoc($query))
  3. {
  4. $id=$row['id'];
  5.  
  6. $query2 = mysql_query("SELECT * FROM test2 WHERE zdid='$id' AND zd='3' "); // 203,101 rekordów
  7. while ($row2 = mysql_fetch_assoc($query2)) {
  8.  
  9. }
  10. };


próbuje to przerobić na join i nie moge sobie poradzić

próbowałem tak:
  1. $query = mysql_query("SELECT * FROM test2 LEFT JOIN test ON test.id = test2.id") or die(mysql_error());


tyle że wtedy wypluwa wszystko z test2 a miało wypluwać tylko te zd='3' teoretycznie można zrobić warunek if już w petli ale pewnie jest metoda żeby nie wyświetlać wszystkich rekordów z tabeli test2

a jak zrobie tak
  1. $query = mysql_query("SELECT * FROM test2 LEFT JOIN test ON test.id = test2.id WHERE test2.zd='3' ") or die(mysql_error());


to ucina mi rekordy z test które nie mają odpowiednika w test2

pozatym widze problem że jeżeli jest kilka rekordów w test2 które mają 1 odpowiednika w test to ucina rekordy z test2 wyswietlając tylko 1 który sie dopasuje
Spawnm
  1. SELECT * FROM test LIMIT 1000

Takie wybryki się cachuje.
zdid='$id' <- i tutaj można by dać jedno zapytanie z IN(), powinno być szybciej
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.