Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie komentarzy + liczenie
Forum PHP.pl > Forum > Bazy danych > MySQL
barat
Witam.
Mam mały problem ze sformułowaniem zapytania.

Mam dwie tabele:

TUTORIALS
| tutorials_id | tutorials_reszta |

gdzie |tutorials_reszta| wprowadzone dla uproszczenia (normalnie jest tam więcej kolumn, ale po co utrudniać - do zapytania się nie przydadzą)

COMMENTS
| comments_id | comments_user | comments_comment | comments_date|commenst_tutorial |

gdzie |commenst_tutorial| = |tutorials_id|

Teraz na czym mają polegać zapytania:

1) Pobrać z bazy wszystkie komentarze z tabeli COMMENST dla danego |commenst_tutorial | jednocześnie licząc ile jest tych komentarzy ...

2) Pobrać z bazy wszystkie tutoriale z tabeli TUTORIALS jednocześnie licząc ile komentarzy w tabeli COMMENST jest dla danego |tutorials_id|

Oczywiście można iść na łatwiznę i mieć w tabeli TUTORIALS kolumnę, w której przy każdym komentarzu dodawane jest +1, a przy każdym usunięciu jest -1, ale w takim wypadku trzeba zawsze o tym pamiętać. Dodatkowo gdy kiedyś pójdzie jakiś SPAM, to wygodniej mi usunąc komentarze bezpośrednio w bazie - niestety wtedy także muszę lecieć do tabeli TUTORIALS i zmieniać stan licznika.
Stąd też mój pomysł, że pewnie jest jakieś ładne zapytanie MySQL.
Niestety w MySQL aż tak "wywijać" JESZCZE nie potrafię, więc pytam lepszych (muszę kiedyś znaleźć czas i się przekopać przez dokumentację MySQL bo coraz częściej odczuwam swoje ograniczenie w tym zakresie:) )

Dla (1) próbowałem coś w rodzaju:

  1. SELECT a.*, COUNT(b.comments_id) AS FROM comments a, comments b WHERE a.`commenst_tutorial` = b.`commenst_tutorial` AND a.`commenst_tutorial` = 'clean_vertical_menu'


Ale zwraca tylko jeden wiersz i to dodatkowo ze złą ilością ...

Ktoś ma jakiś pomysł?

Jeśli to pomoże - MySQL 5.1.30
kefirek
Do 1 bedzie tak
  1. SELECT *, COUNT(comments_id) AS ile FROM COMMENTS GROUP BY comments_id


Do 2 tak
  1. SELECT *, (SELECT COUNT(comments_id) FROM COMMENTS c WHERE (t.tutorials_id=c.commenst_tutorial)) AS ile
  2. FROM TUTORIALS t
barat
w (2) tak mi się wydawało, że będzie podzapytanie - działa bardzo dobrze. DZIĘKI smile.gif

Niestety (1) spowoduje wyświetlenie po jednym komentarzu dla każdego |commenst_tutorial | z liczbą tych komentarzy - czyli mniejwięcej zrobi to co zapytanie do przypadku (2). A mi chodzi o to, że wyświetlam jakiś tutorial, chcę mieć wszystkie komentarze do niego, i jednocześnie np w pierwszym wierszu informację ile tych komentarzy jest ...

Najważniejsze, że zapytanie 1 działa poprawnie, to mi było bardziej potrzebne smile.gif W drugim przypadku zawsze można zrobić dwa zapytania (jedno do pobrania komentarzy i jedno dla zliczenia ich - baza aż tak nie ucierpi 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.