Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z zapytaniem
sledziu1
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 10.07.2006

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


temat do usunięcia, znalazłem już odpowiedź

Ten post edytował sledziu1 6.04.2008, 17:15:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
osiris
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


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
Go to the top of the page
+Quote Post
sledziu1
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 1
Dołączył: 10.07.2006

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


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ć.

Ten post edytował sledziu1 7.04.2008, 19:08:19
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:06