Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pobieranie danych z kilku tabel jednocześnie.
Forum PHP.pl > Forum > Przedszkole
krzywy36
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? smile.gif
Grzyw
  1. SELECT
  2. news.id,
  3. news.title,
  4. news.content,
  5. (SELECT COUNT(comments.content) FROM comments WHERE comments.item_id = news.id),
  6. DATE_FORMAT(news.date, '%d/%m/%y') AS date,
  7. DATE_FORMAT(news.date, '%H:%i') AS time,
  8. users.username AS username
  9. FROM news JOIN users ON users.id = news.author_id
  10. ORDER BY news.id DESC


Nie wiem, czy się nie bachnąłem, pisane "z palca". Zwróć uwagę, że zastąpiłem WHERE'y JOIN'ami - polecam się przestawićsmile.gif
mortus
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.
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.