Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Pobieranie danych z kilku tabel jednocześnie., z użyciem funkcji COUNT().
krzywy36
post
Post #1





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


Oto co chcę uzyskać: pobieram newsy z tabeli news, do tego dołączam nazwę użytkownika z tabeli users (na podstawie pola "author_id" w news) i do tego dołączam ilość komentarzy do danego newsa z tabeli comments (na podstawie pola "item_id" w comments i id newsa). Samo pobieranie z newsy + nazwa użutkownika działa ale z COUNT z trzeciej tabeli już nie mogę się uporać.
Narazie doszedłem do takiego czegoś:
  1. SELECT news.id, news.title, news.content, DATE_FORMAT(news.date, '%d/%m/%y') AS date, DATE_FORMAT(news.date, '%H:%i') AS time, users.username AS username, COUNT(comments.content) AS comments_number FROM news, users, comments WHERE users.id = news.author_id AND comments.item_id = news.id ORDER BY news.id DESC

ale po pierwsze, nie są pobierane wszystkie newsy tylko jeden i zliczane są wszystkie komentarze a nie tylko te z id newsa.
Wskaże ktoś błąd? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Jeśli to ma być tylko liczba komentarzy, to można zrobić tak:
  1. SELECT n.id, n.title, n.content, DATE_FORMAT(n.date, '%d/%m/%y') AS date, DATE_FORMAT(n.date, '%H:%i') AS time, u.username AS username, (SELECT COUNT(*) FROM comments c WHERE c.item_id = n.id) AS comments_number FROM news n, users u WHERE u.id = n.author_id ORDER BY n.id DESC


@up: nie bachnąłeś się i oczywiście zgadzam się co do JOINów.

Ten post edytował mortus 1.03.2011, 22:05:06
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: 18.10.2025 - 14:26