05. februar 2007 - 22:08Der er
13 kommentarer og 1 løsning
Count, nul skal også med
Hej. har et debatforum, hvor der er en oversigt over oprettede debatter. Har fået lavet en sql med count, der lister alle debatterne op, og så tæller hvor mange kommentarer der er kommet. Debattrådene ligger i een tabel, og alle kommentarer ligger i en anden tabel.
Således ser min sql ud: SELECT debatindlaeg.relation, Count(debatindlaeg.relation) AS Antal FROM (brugere INNER JOIN debatemne ON brugere.brugernavn = debatemne.ansvarlig) INNER JOIN debatindlaeg ON debatemne.id = debatindlaeg.relation WHERE (((debatemne.ansvarlig)=[brugere].[brugernavn])) GROUP BY debatindlaeg.relation;
Mit problem er, at hvis antallet af kommentarer til en tråd er nul, så bliver denne ikke trukket med ud.
Hvordan fortæller jeg min SQL at den ikke skal ignorere poster med Antal = 0
Jo, men jeg tror bare ikke det er nok. Når du flytter debatindlæg ud på en LEFT OUTER JOIN, så bør GROUP BY også ændres til debatemne.id (det samme gælder så for SELECT delen). Til slut kan jeg ikke rigtigt se formålet med WHERE selektionen, da denne relation i forvejen står på ON delen af INNER JOIN.
Så mit forslag må lyde ca. sådan her:
SELECT debatemne.id, Count(debatindlaeg.relation) AS Antal FROM (brugere INNER JOIN debatemne ON brugere.brugernavn = debatemne.ansvarlig) LEFT JOIN debatindlaeg ON debatemne.id = debatindlaeg.relation GROUP BY debatemne.id;
Synes godt om
Slettet bruger
06. februar 2007 - 09:02#3
Hvis du skal have de debatindlæg med, som ikke er der!!! så skal du have debatemnet at gå ud fra, som kjulius også foreslår. Med den opstilling så kan du vel bruge nz, så det bliver noget i retning af:
SELECT debatemne.id, nz(count(debatindlaeg.relation),"0") AS Antal FROM osv!~)
Tak for de hurtige svar. Det virker dog stadigvæk ikke.
Fdata og Kjulius, jeres resulterer ikke i fejl, men undlader stadig de ikke kommenterede indlæg.
spg, når jeg indsætter din select i stedet for det kjulius har skrevet, så får jeg fejlen:
Expected end of statement RSantalsvar.Source = "SELECT debatemne.id, nz(count(debatindlaeg.relation),"0") ----------------------------------------------------------------------------^
Hmm. Har prøvet en masse forskellige ud fra det du har foreslået, men få div. fejl. Den seneste fejl siger: Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error in query expression 'nz(count(osv, osv.....
"Fdata og Kjulius, jeres resulterer ikke i fejl, men undlader stadig de ikke kommenterede indlæg."
Hvordan skal det forstås?
Vises de ikke-kommenterede debatemners id ikke? Debatemnets id burde blive vist, dog uden et tal for antallet af kommentarer.
Eller ønsker du selve debatemnet talt med?
I så fald burde det måske se sådan ud:
SELECT debatemne.id, Nz(Kommentarer, 0) + 1 AS [Indlæg] FROM (brugere INNER JOIN debatemne ON brugere.brugernavn = debatemne.ansvarlig) LEFT JOIN [SELECT relation, COUNT(*) AS kommentarer FROM debatindlaeg GROUP BY relation]. AS tmp ON debatemne.id = tmp.relation;
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.