Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Łączenie tabel + pobieranie ilości rekordów z jednej
Forum PHP.pl > Forum > Bazy danych > MySQL
Balon
Mam dwie tabele. Jedna z newsami, druga z komentarzami. W komentarzach mam kolumne id_news.

Teraz jak w jaki sposób mam ułożyć zapytanie żeby pobierać wszystkie komentarze + dołączać do wyników ilość komentarzy dla danego newsa.

Nie mogę jakoś tego dołączyć. Próbowałem coś z GROUP BY ale wtedy dziwne wyniki dawało.

proszę o pomoc, pozdrawiam !
c0cr0ach
W tabeli komentarze utwórz sobie klucz obcy, wskazujący na na id_newsa w tabeli newsy. Poniżej zamieszczam przykładowe zapytanie wyświetlające id_newsa i ilość komentarzy.

  1. SELECT n.id_newsa,count(*) FROM newsy n, komentarze k WHERE n.id_newsa=k.news GROUP BY n.id_newsa;


news z tabeli komentarze to wspomniany klucz obcy. Mam nadzieję, że ten prosty przykład jakoś Cię naprowadzi smile.gif
Balon
no dobra. prawie działa ale to wyświetla tylko newsy, do których istnieją komentarze. próbowałem tak to przerobić no ale nie działa jak trzeba ...
  1. SELECT n. * , count( * )
  2. FROM news n
  3. LEFT JOIN comments c ON c.id_news = n.id
  4. GROUP BY c.id_news
Kicok
Jeśli używasz GROUP BY to nie możesz pobierać dowolnych kolumn, tylko te po których grupujesz (albo te potraktowane funkcjami agregującymi).

Żeby wyświetlić wszystkie dane z tabeli news + ilość komentarzy, to musisz zastosować podzapytanie:
  1. SELECT n.*, (SELECT COUNT(*) FROM comments c WHERE (c.id_news = n.id)) AS `count`
  2. FROM news n
Balon
Masz u mnie buziaka ! biggrin.gif Nie no żartuje. Dzięki wielkie. Dobra rzecz, rozwiązuje wiele moich problemów winksmiley.jpg
v1t4n
Gdybym mógł wcisnąłbym pomógł, niestety nie moge więc napisze: bardzo dziękuję smile.gif


// Pomógł wciśnięte winksmiley.jpg
//ayeo
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.