Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Zapytanie - count
potreb
post 23.08.2009, 18:51:53
Post #1





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


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??

Ten post edytował potreb 23.08.2009, 19:07:49


--------------------

Go to the top of the page
+Quote Post
thek
post 23.08.2009, 19:07:07
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
skowron-line
post 23.08.2009, 19:09:20
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. GROUP BY id_tematu


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
potreb
post 23.08.2009, 20:02:16
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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




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 :/

Ten post edytował potreb 23.08.2009, 20:02:32


--------------------

Go to the top of the page
+Quote Post
thek
post 23.08.2009, 21:50:44
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




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

Ten post edytował thek 23.08.2009, 21:52:57


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Wersja Lo-Fi Aktualny czas: 31.07.2025 - 10:36