Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przy COUNT() nie zwraca wszystkich wyników
Forum PHP.pl > Forum > Bazy danych
TNT
Cześć
Mam takie oto zapytanie:
  1. SELECT c.title AS categoryTitle, i.id, i.tstamp, i.title, i.text, i.author_id, m.firstname, m.lastname, COUNT(com.id) AS totalComments
  2. FROM tl_pm_message_category AS c
  3. JOIN tl_pm_message AS i ON (i.pid = c.id)
  4. JOIN tl_member AS m ON (m.id = i.author_id)
  5. JOIN tl_pm_comment AS com ON (com.message_id = i.id)
  6. WHERE c.pid=7
  7. GROUP BY i.id

Jak mam 4 rekordy w tl_pm_message, tak zwraca mi tylko te, które mają odniesienia w tl_pm_comment (tl_pm_message.id = tl_pm_comment.message_id).
Innymi sowy:
Zwraca mi tylko te wiadomości (message), które mają jakieś komentarze (comment). W przypadku gdy wiadomość nie ma żadnego komentarza, nie jest ona brana pod uwagę.

Dlaczego tak się dzieje?
eccocce
Może niedokładnie przeczytałem, ale spróbuj ostatniego JOINa zamienić na "LEFT JOIN" - wtedy w odpowiednich kolumnach będziesz miał NULL dla wiadomości, które nie mają komentarzy.
TNT
Cytat(eccocce @ 7.06.2010, 10:17:43 ) *
Może niedokładnie przeczytałem, ale spróbuj ostatniego JOINa zamienić na "LEFT JOIN" - wtedy w odpowiednich kolumnach będziesz miał NULL dla wiadomości, które nie mają komentarzy.

Kurka, działa. A jak wcześniej próbowałem to coś się krzaczyło. Tak czy siak - dzięki smile.gif
Method
offtopic.gif czemu jak chcesz miec licznik z jednej tabelki to robisz joina? może zapytanie efektowne ale nie efektywne smile.gif
TNT
Cytat(Method @ 23.06.2010, 11:17:58 ) *
offtopic.gif czemu jak chcesz miec licznik z jednej tabelki to robisz joina? może zapytanie efektowne ale nie efektywne smile.gif

Co propnujesz w zamian? snitch.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.