Avatar billede eksperten1 Nybegynder
16. oktober 2001 - 21:25 Der er 4 kommentarer og
1 løsning

Jeg rpøver lige Count() igen !


Jeg har et forum, hvor jeg gerne vil have talt antallet af svar på hver enkelt indlæg.

I min tabel har jeg følgende felter:
id, oprettetdato, brugernavn, overskrift, parentid

Når jeg opretter et nyt indlæg bliver parentid = 0, når der svares på et indlæg, bliver parentid = original-indlæg-ID (!).

Mit SQL kald er følgende:  SQL = \"SELECT id, overskrift, oprettelsesdato, brugernavn, count(id) AS antalsvar FROM forum WHERE parentid = 0 or parentid = \"& id & \" GROUP BY parentid ORDER BY oprettetdato DESC;\"

Men når jeg forsøger at åbne det, får jeg fælgende fejl...


Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression \'id\' as part of an aggregate function.


Er der en hjælpsom sjæl der vil hjælpe mig ??
Avatar billede jakoba Nybegynder
16. oktober 2001 - 21:33 #1
Det går ikke. count kan kun bruges tal at tælle når der en mange records der har de samme uddata som der bedes om

SQL = \"SELECT parentid, parentoverskrift, parentoprettelsesdato, parentbrugernavn, count(parentid) AS antalsvar FROM forum WHERE parentid = 0 or parentid = \"& id & \" GROUP BY parentid ORDER BY oprettetdato DESC;\"

nu er de felter du trækker ud alle sammen nogen der er fælles for de indlæg du ønsker at gruppere.

mvh JakobA
Avatar billede kayb Nybegynder
17. oktober 2001 - 04:39 #2
Du skal have ID med i din GROUP BY sætning.
SQL = \"SELECT id, overskrift, oprettelsesdato, brugernavn, count(id) AS antalsvar FROM forum WHERE parentid = 0 or parentid = \"& id & \" GROUP BY ID, parentid ORDER BY oprettetdato DESC;\"
Avatar billede eksperten1 Nybegynder
17. oktober 2001 - 08:54 #3
>jakoba, jeg forstår ikke helt hvad du gør her, men jeg har jo ingen af de felter oprettet som du henviser til ??

>kayb - Den fungerer desværre heller ikke, fejlen lyder : Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression \'overskrift\' as part of an aggregate function.

//Mark
Avatar billede kayb Nybegynder
17. oktober 2001 - 10:11 #4
Det var mig der sov i timen.Alle de felter som du har i SELECT delen skal du også have med i GROUP BY delen.
Avatar billede jakoba Nybegynder
17. oktober 2001 - 10:26 #5
De værdier du trækker ud skal skrives i resultattabbellen sammen med dit count.
Det kan ikke lade sig gøre hvis du udtrækker fx brugernavn, da der vil være mange forskellige brugernavne i den tråd du ønsker at tælle. det med at skrive parent foran alle feltnavnene var blot for at indikere at data fra den record alle de grupperede indlæg har tilfælles er de eneste der kan udtrækkes sammen med count().

Hvis du vil have både count(id) og listing af de individuelle brugernavne i svarene må du lave 2 SQL sætninger

SQL = \"SELECT parentid, count(id) AS antalsvar FROM forum WHERE parentid = 0 or parentid = \"& id & \" GROUP BY parentid ORDER BY oprettetdato DESC;\"

Mit SQL kald er følgende:  SQL = \"SELECT id, overskrift, oprettelsesdato, brugernavn FROM forum WHERE parentid = 0 or parentid = \"& id & \" GROUP BY parentid ORDER BY oprettetdato DESC;\"

mvh JakobA

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
Kategori
Kurser inden for grundlæggende programmering

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