Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
sledziu1
temat do usunięcia, znalazłem już odpowiedź
osiris
Witam,

uzyj LEFT JOIN'a:
  1. SELECT users.id, users.login, count( komentarze.TO ) AS liczba,
  2. count( k1.TO ) AS pozytywne,
  3. count( k2.TO ) AS neutralne,
  4. count( k3.TO ) AS neugatywne
  5. FROM users LEFT JOIN komentarze ON komentarze.TO = users.id
  6. LEFT JOIN komentarze AS k1 ON k1.TO = users.id AND k1.typ=2
  7. LEFT JOIN komentarze AS k2 ON k2.TO = users.id AND k2.typ=0
  8. LEFT JOIN komentarze AS k2 ON k2.TO = users.id AND k2.typ=1
  9. GROUP BY users.id, users.login ORDER BY liczba DESC LIMIT 0, 10


ale najlepiej bedzie jesli do tabeli users dodasz 3 pola z ilosciami poszczegolnych typow komentarzy, bo przy sporej ilosci uzytkownikow i komentarzy zatrzesz silnik baz danych powyzszymi zapytaniami smile.gif Jesli dodasz te pola to oczywiscie nie aktualizuj tabeli users przy kazdym dodanym/usunietym komentarzu, tylko wykonuj aktualizacje pol z ilosciami komentarzy np. co pol godziny.
Chociaz skoro masz problem z tak prostym zapytaniem to jestem prawie pewien ze nigdy nie bedzie tam az tylu uzytkownikow i komentarzy zeby myslec o jakiejs optymalizacji, wiec mozesz zostac przy obecnym rozwiazaniu.

Pozdrawiam
sledziu1
dzięki, szkoda ze tak późno bo kolega mi już pomógł. W pytaniu miałem tylko JOIN zamiast LEFT JOIN jakby jeszcze kogoś to interesowało.

Odnośnie optymalizacji liczę, że wytrzyma a jak nie to zrobię raz na 6h generowanie tego tekstu i potem tylko go wypisywać.
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.