Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Zapytanie - count
Forum PHP.pl > Forum > Przedszkole
potreb
Witam, napotkałem pewien problem.
Tworze zapytanie do forum z count.

  1. $sql = "SELECT a.*, b.*, count(distinct if(tcat>0, tid, null)) as topics FROM forum a
  2. LEFT JOIN forum_tp b ON b.tfid = a.fid
  3. WHERE a.`fid` = '".$_GET['fid']."' AND b.`tcat` = '0'
  4. ORDER BY b.tdate DESC";



W `forum_top` posiadam wiele tematów, z tym, że chciałbym podliczyć ilość postów do danego tematu, jednak stosując count(distinct zawsze zwraca mi jeden rekord, jak wyrzucę count wyświetla mi wszystkie rekordy.

Okey, namieszałem sobie.
tcat = 0 - topics
tcat = tid - posts

Czyli zaprzeczyłem zapytaniem

Czyli może lepiej rozdzielić tematy na odpowiedzi??
thek
To ja zadam pytanie...Gdzie masz jakikolwiek podpięcie tabeli z postami tyczącymi się danego tematu by móc je policzyć? Bo ja nie widzę. Łączysz tylko tabelę forum z tabelą topiców jesli dobrze widzę, ale tabeli postów nawet nie ruszasz, więc nie spodziewaj się od bazy wpisania tu czegokolwiek. Musiałbyś jeszcze dorzucić join do tabeli postów i wyciągnąć z niej interesujące Cię dane.
skowron-line
  1. GROUP BY id_tematu
potreb


Zrobiłem rozdział tabel, wszystko ładnie działa oprócz jednego zapytania.
  1. SELECT a.*, b.*, c.* FROM forum a
  2. LEFT JOIN forum_topics b ON b.tfid = a.fid
  3. LEFT JOIN forum_posts c ON c.pcat = b.tid
  4. WHERE c.pcat = '".$_GET['tid']."'
  5. ORDER BY b.tdate DESC


Jeżeli w forum_posts nie ma żadnej odpowiedzi to nic się nie wyświetla :/
thek
Nie dziwię się... Zauważ, że c.pcat jest w tabeli postów. Jako że tabela postów jest pusta, to po joinowaniu z pustą tabelą wszystkie rekordy w bazie wyników tymczasowych mają w kolumnach pobranych z c same NULL smile.gif wyświetl sobie tę bazę bez warunku WHERE a sam to zobaczysz winksmiley.jpg Jak więc masz znaleźć jakakolwiek wartość pośród samych NULL? Wynik masz zerowy bo takie rekordy nie istnieją i stąd takie zachowanie. Za to użycie b.tid z tabeli tematów zwróciłoby Ci rekordy bo w tej tabeli zapewne COŚ jest. Tematy istnieją na pewno w przeciwieństwie do tabeli postów. Trochę pomyślunku i sam byś na to wpadł smile.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.