05. december 2001 - 11:37Der er
12 kommentarer og 1 løsning
Kan ikke få count til at virke
Jeg har lidt problemer med count, hvordan for jeg dether til at virke? SELECT k_forum.*, count(k_post.pid) as cnt from kod_forum as k_forum, kod_forumpost as k_post where k_forum.id=k_post.pid
både og select f.id, f.forumnavn, f.beskrivelse , count(p.pid) as antal from kod_forum f, kod_forumpost p where f.id = p.pid group by f.id, f.forumnavn, f.beskrivelse
Det ser sådan ud nu og det virker næsten som det skal, men hvis der er en linje i kod_forum hvis id ikke passer til en pid i kod_forumpost (f.id = p.pid) kommer der ikke noget ud for dem. Fik du den?
Så skal du bruge outer join, som jeg ikke rigtig ved hvordan man laver i MySQL, men prøv evt. at se her:
tabel1 INNER JOIN tabel2 on <betingelse> fjerner en sammenkobling, hvis betingelsen ikke er opfyldt. Det betyder at rækken i tabel1 ikke kommer med i det endelige resultat
tabel1 LEFT JOIN tabel2 on <betingelse> beholder rækken fra tabel1, selvom betingelsen ikke er opfyldt. Alle felter udtrukket fra tabel2 udfyldes med NULL værdier.
tabel1 RIGHT JOIN tabel2 on <betingelse> fungerer som LEFT JOIN, blot er det tabel2, som er den betydende tabel (altså den der beholdes, mens felterne i tabel1 udfyldes med NULL)
select kod_forum.id, kod_forum.forumnavn, kod_forum.beskrivelse , count(kod_forumpost.pid) as antal from (kod_forum LEFT JOIN kod_forumpost ON kod_forum.id = kod_forumpost.pid) group by kod_forum.id, kod_forum.forumnavn, kod_forum.beskrivelse
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.