Avatar billede zity Nybegynder
08. marts 2009 - 08:56 Der er 4 kommentarer og
1 løsning

Hent antallet af kommentarer sammen med post

Hej
Jeg er ved at omskrive mit cms system og i den forbindelse kunne jeg godt tænke mig, at når jeg henter en liste over blogindlæg, så skal den også returnere hvor mange kommentarer der er til de enkelte indlæg. Jeg har siddet og søgt lidt på nettet, men kan ikke få noget til at virke som det skal. Min forespørgsel ser således ud:

SELECT cms_posts.title,cms_posts.post,cms_posts.date,cms_posts.category_id,cms_posts.id AS post_id,cms_categories.name AS category FROM cms_posts JOIN cms_categories ON cms_posts.category_id = cms_categories.id WHERE cms_posts.published='1' ORDER BY cms_posts.date DESC LIMIT 4

På forhånd tak :)
Avatar billede hkb-x Nybegynder
08. marts 2009 - 20:04 #1
hmm. her skal du passe på da du i en forespørgsel kommer til at bevæge dig over 3 tabeller. Min erfaring er at hvis du kun skal bruge de 4 seneste så lav nogle simple forespørgsler istedet. Lav evt kun din hoved forspørgsel og så lav de andre i din web del når du looper postsne igennem.
Avatar billede zity Nybegynder
09. marts 2009 - 16:43 #2
Ja det er også det jeg gør nu, men tænkte bare at det ville være nemmere hvis man nu kunne fikse det hele i en forespørgsel, men det kan godt være det ikke er en god løsning.
Avatar billede arne_v Ekspert
10. marts 2009 - 01:39 #3
Du joiner med tabellen med kommentarer, tilføjer COUNT(*) til select listen og laver GROUP BY på resten.
Avatar billede zity Nybegynder
10. marts 2009 - 07:36 #4
Ja det kom jeg også frem til, men det lykkedes mig aldrig at få lavet det ordentligt. Jeg kunne kun få den til at returnere en kolonne med det samlede antal at kommentarer, ikke det antal som høre til det pågældende indlæg. Kan du give et eksempel på hvordan det skal gøres? :)
Avatar billede zity Nybegynder
14. marts 2009 - 09:22 #5
Nå nu har jeg fået lavet en forespørgsel som virker efter hensigten:

SELECT cms_posts.title, cms_posts.post, cms_posts.date, cms_posts.category_id, cms_posts.id AS post_id, cms_categories.name AS category, COUNT( cms_comments.id ) AS comments
FROM cms_posts
JOIN cms_categories ON cms_posts.category_id = cms_categories.id
LEFT JOIN cms_comments ON cms_comments.post_id = cms_posts.id
WHERE cms_posts.published = '1'
GROUP BY cms_posts.id
ORDER BY cms_posts.date DESC
LIMIT 4
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester