08. oktober 2007 - 22:09Der er
9 kommentarer og 1 løsning
(For mig) Lettere kompliceret SQL-forespørgsel
Jeg har to tables til et forum jeg er ved at lave og jeg ville gerne have et samlet dataset med et bestemt udvalg af forums samt tal på hvor mange beskeder der er i forumet.
Table Forum: id navn
Table Post id er_original
Jeg vil gerne have et dataset der så siger mig: forum.id, forum.navn, count(er_original = true) as OriginalCount, count(er_original = false) as AnswerToOrignalPosts så jeg kan bruge det direkte i min repeater og kun skal spørge databasen en gang.
Jeg kan ikke rigtig få det på plads. Det tætteste jeg kommer er:
SELECT forum.id, forum.navn, COUNT(post.er_original) AS postscount FROM forum left join post on forum.id = post.forum_id GROUP BY forum.id, forum.name, forumpost_is_op
men det giver mig to rækker pr. forum, en med count for true og en med caount for false...
Er der nogen der kan gøre de to linjer til en linje?
SELECT forum.id, forum.navn, COUNT(post.er_original) AS postscount FROM forum left join post on forum.id = post.forum_id GROUP BY forum.id, forum.name, post.er_original
Sådan skulle den have set ud.. jeg havde bare lige forenklet min egen.
Ok, jeg skulle lige forstå ;) Et par subselects kan gøre det. Dette er godt nok klippet fra mysql, og handler om noget helt andet, men det bør være det samme, når du får sat dine navne ind:
select vare as sss,(select count(*) from v where vare=sss and minantal=4),(select count(*) from v where vare=sss and minantal<>4) from v group by vare
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.