Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] Zaliczenie rekordów z warunkiem IN (SQL z 3 tabelami)
shpyo
post 5.10.2015, 07:33:54
Post #1





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


Hej,
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:

  1. SELECT
  2. *
  3. FROM
  4. tags_news
  5. WHERE
  6. tag_id IN ([list idków]]);


I ładnie zwraca mi IDki newsów.

Potem już konkretniejsze dane - informacje o wpisach:
  1. SELECT
  2. tn . * ,
  3. n.id,
  4. n.title,
  5. n.slug,
  6. n.lead
  7. FROM
  8. tags_news tn,
  9. news n
  10. WHERE
  11. tn.tag_id
  12. IN ( [list IDków] )
  13. AND n.id = tn.news_id
  14. GROUP BY
  15. tn.news_id
  16. ORDER BY
  17. 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.


--------------------
Go to the top of the page
+Quote Post
trueblue
post 5.10.2015, 08:01:02
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1827
Dołączył: 11.03.2014

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


  1. COUNT(DISTINCT c.id) AS news_comments
?


--------------------
Go to the top of the page
+Quote Post
shpyo
post 5.10.2015, 08:22:17
Post #3





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

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


@trueblue: tak smile.gif

Ten post edytował shpyo 5.10.2015, 08:54:49


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 02:34