Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql] Grupowanie wyników ...
Forum PHP.pl > Forum > Przedszkole
Levabul
Mam problem, a że jestem noga ze troszkę bardziej złożonych zapytań to piszę na przedszkolu 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.
nospor
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
Levabul
Cytat
O kutwa, jesteś boski nospor 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 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
nospor
Cytat
A jednak nie :/
sad.gif
laugh.gif tam bylo wszystko dobrze. znaczy dobrej ci udzielilem odpowiedzi. nic nie mowiles ze czego moze nie byc winksmiley.jpg

Cytat
pamięci dobija się coś o LEFT JOINie, ale nie jestem pewny czy dobrym tropem ide =_=
Idziesz bardzo dobrym tropem winksmiley.jpg
Levabul
I wymyśliłem 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
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.