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%)
-----


@Wieviór, ale to ma być bardzo mała stronka i tak szczerze nie spodziewam się więcej niż kilkudziesięciu komentarzy do kilkunastu newsów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Obecnie mam zapytanie wyglądające tak:
  1. SELECT n.*, count(c.id) AS cnt FROM news n INNER JOIN comments c ON c.obj_id=n.id GROUP BY n.id ORDER BY n.id DESC


Nie generuje ono już żadnych błędów, ale nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Nie zwracają się żadne rekordy, chociaż w tabeli news znajduje się jedna pozycja.
Pewnie nie jest to jakiś poważny błąd, niestety nie do przejścia przeze mnie, więc ponownie proszę o pomoc...
Go to the top of the page
+Quote Post
Cienki1980
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(l0ud @ 15.03.2008, 10:50:42 ) *
@Wieviór, ale to ma być bardzo mała stronka i tak szczerze nie spodziewam się więcej niż kilkudziesięciu komentarzy do kilkunastu newsów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Obecnie mam zapytanie wyglądające tak:
  1. SELECT n.*, count(c.id) AS cnt FROM news n INNER JOIN comments c ON c.obj_id=n.id GROUP BY n.id ORDER BY n.id DESC


Nie generuje ono już żadnych błędów, ale nie działa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Nie zwracają się żadne rekordy, chociaż w tabeli news znajduje się jedna pozycja.
Pewnie nie jest to jakiś poważny błąd, niestety nie do przejścia przeze mnie, więc ponownie proszę o pomoc...


Jeżeli w tabeli comments nie ma żadnego wpisu nie pokaże się żaden wpis ... dzieje się tak bo wykorzystałeś INNER JOIN.
Zastąp INNER JOIN tekstem LEFT JOIN i powinno coś się pokazać.
PS. Żeby dowiedzieć się czym się różni INNER od LEFT zapraszam do manuala (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
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: 25.09.2025 - 22:35