Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Zliczanie komentarzy przy pobieraniu newsa
l0ud
post
Post #1





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Witam, mam taki problem:

2 tabelki mysql (news, comments) utworzone w ten sposób:

  1. CREATE TABLE news (
  2. id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. topic varchar(250) NOT NULL,
  4. contents text NOT NULL,
  5. autoformat tinyint NOT NULL,
  6. datetime char(16) NOT NULL
  7. );
  8.  
  9. CREATE TABLE comments (
  10. id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  11. username char(50) NOT NULL,
  12. mail char(50),
  13. type tinyint UNSIGNED NOT NULL,
  14. contents text NOT NULL,
  15. datetime char(16) NOT NULL
  16. );


I teraz chcę jednym zapytaniem pobrać newsy wraz z ilością komentarzy dla każdego. Kombinuję w ten sposób:
  1. SELECT COUNT(comments.id),news.id,news.contents,news.topic,news.datetime,news.autoformat
  2. FROM news,comments GROUP BY news.id ORDER BY id DESC


Ale nie działa :/

Proszę o pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
l0ud
post
Post #2





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Wielkie dzięki za chęci, niestety, żadne zapytanie nie chce działać (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

@Cienki1980
Kod
Blad krytyczny: Nie udalo sie wykonac zapytania: select n.*, count(c.id) as cnt from news n inner join comments c on n.id=c.obj_id order by n.id desc

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause


@mokry, a MySQL obsługuje w ogóle zapytanie w zapytaniu? [wersja 3.23.58]
Kod
Blad krytyczny: Nie udalo sie wykonac zapytania: SELECT news.*, (SELECT COUNT(comments.id) FROM comments WHERE news.id = comments.obj_id) AS ile_komentarzy FROM news ORDER BY news.id DESC

Something is wrong in your syntax obok 'SELECT COUNT(comments.id) FROM comments WHERE news.id = comments' w linii 1


Wkleiłem to co mi wyrzucił sterownik bazy, bo jednocześnie widać zapytanie i błąd.

KCG, myślałem nad tym, ale wydawało mi się to niepotrzebnym utrudnieniem (zwłaszcza w PA). Już równie dobrze mógłbym wywoływać oddzielne zapytanie dla każdego newsa, (pobierające ilość komentarzy) ale wolałbym tego uniknąć...
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 02:05