mam problem z jednym zapytaniem.
Chcę pobrać wpisy z bloga, które zawierają jeden z podanych tagów (id) i dodatkowo do każdego wpisu zliczyć komentarze.
Mam takie tabele:
news:
id, title, slug, lead, ...
comments:
id, news_id, author, comment, ...
tags:
id, name
tags_news:
tag_id, news_id
Składanie SQL zacząłem od prostego:
SELECT * FROM tags_news WHERE tag_id IN ([list idków]]);
I ładnie zwraca mi IDki newsów.
Potem już konkretniejsze dane - informacje o wpisach:
SELECT tn . * , n.id, n.title, n.slug, n.lead FROM tags_news tn, news n WHERE tn.tag_id IN ( [list IDków] ) AND n.id = tn.news_id GROUP BY tn.news_id ORDER BY n.id DESC;
I tutaj jest problem z pobraniem komentarzy dla każdego wpisu.
Jak do selecta dodam COUNT(c.id) AS news_comments, dodam tabelę comments c i warunek dam AND c.news_id = n.id to zwraca mi dziwne liczby. Potrzebuję jeszcze jednego lub kilku warunków by zawężyć zapytanie? Gdy podam małą liczbę IDków (2) tagów do warunku IN, to dobrze zlicza, przy większej liczbie (>3) jest już problem.