Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] Grupowanie wyników ...
Levabul
post
Post #1





Grupa: Zarejestrowani
Postów: 197
Pomógł: 0
Dołączył: 11.07.2005

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


Mam problem, a że jestem noga ze troszkę bardziej złożonych zapytań to piszę na przedszkolu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Otóż mam tabele:

  1. CREATE TABLE `news` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `author_id` int(11) NOT NULL DEFAULT '0',
  4. `title` varchar(12) NOT NULL DEFAULT '',
  5. `date` timestamp(14) NOT NULL,
  6. `content` text NOT NULL,
  7. PRIMARY KEY (`id`)
  8. );
  9.  
  10. CREATE TABLE `comments` (
  11. `id` int(11) NOT NULL AUTO_INCREMENT,
  12. `news_id` int(11) NOT NULL DEFAULT '0',
  13. `author_id` int(11) NOT NULL DEFAULT '0',
  14. `title` varchar(12) NOT NULL DEFAULT '',
  15. `date` timestamp(14) NOT NULL,
  16. `content` text NOT NULL,
  17. PRIMARY KEY (`id`)
  18. );
  19.  
  20. CREATE TABLE `users` (
  21. `id` int(11) NOT NULL AUTO_INCREMENT,
  22. `login` varchar(15) NOT NULL DEFAULT '',
  23. `password` varchar(15) NOT NULL DEFAULT '',
  24. `name` varchar(15) NOT NULL DEFAULT '',
  25. `sname` varchar(15) NOT NULL DEFAULT '',
  26. `birth` timestamp(14) NOT NULL,
  27. PRIMARY KEY (`id`)
  28. );


I chcę wyciągnąć dane : news.title, news.date, news.content, count (comments.id) oraz users.login.

Doszedłem do czegoś takiego :

  1. SELECT x.title, x.content, x.date, y.login AS author, count( z.id ) AS count_comments
  2. FROM news
  3. AS x, users AS y, comments AS z WHERE y.id = x.author_id GROUP BY x.id ORDER BY x.id LIMIT 5


I wszystko było by ok gdyby nie to że przy każdym newsie wyświetlana jest suma wszystkich komentarzy znajdujących się w bazie :/.

Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




wyswietlasz dane z 3 tabel, a laczysz tylko dwie znich x i y. a co z "z"? Zapytanie musi wiedziec co ma z czym laczyc
Go to the top of the page
+Quote Post
Levabul
post
Post #3





Grupa: Zarejestrowani
Postów: 197
Pomógł: 0
Dołączył: 11.07.2005

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


Cytat
O kutwa, jesteś boski nospor (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) A ja już drugi dzień nad tym siedze, i niemoge dojść dlaczego zlicza mi wszytskie komentarze.

thx za pomoc. Temat do usunięcia (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)


A jednak nie :/ Teraz jeżeli nie ma komentarzy to news wogóle nie jest wyśiwetlany. gdzieś z zakamarków mojej pamięci dobija się coś o LEFT JOINie, ale nie jestem pewny czy dobrym tropem ide =_=

  1. SELECT x.title, x.content, x.date, y.login AS author, count( z.id ) AS count_comments
  2. FROM news
  3. AS x, users AS y, comments AS z WHERE y.id = x.author_id AND z.news_id = x.id GROUP BY x.date ORDER BY x.id LIMIT 5
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
A jednak nie :/
(IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
(IMG:http://forum.php.pl/style_emoticons/default/laugh.gif) tam bylo wszystko dobrze. znaczy dobrej ci udzielilem odpowiedzi. nic nie mowiles ze czego moze nie byc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Cytat
pamięci dobija się coś o LEFT JOINie, ale nie jestem pewny czy dobrym tropem ide =_=
Idziesz bardzo dobrym tropem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Levabul
post
Post #5





Grupa: Zarejestrowani
Postów: 197
Pomógł: 0
Dołączył: 11.07.2005

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


I wymyśliłem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

  1. SELECT x.title, x.content, x.date, y.login AS author, count( z.id ) AS count_comments
  2. FROM news
  3. AS x, users AS y LEFT JOIN comments AS z ON(z.news_id = x.id) WHERE y.id = x.author_id GROUP BY x.date ORDER BY x.id LIMIT 5
Go to the top of the page
+Quote Post

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: 23.08.2025 - 16:06