Avatar billede eksperten1 Nybegynder
13. marts 2001 - 12:24 Der er 3 kommentarer og
2 løsninger

Brug af COUNT i SQL

I et debatforum, vil jeg gerne have et tal på hvor mange svar der er til hvert hovedspørgsmål, men jeg roder noget rundt i brugen af COUNT.

Min tabel ser sådan ud:
DID - autonummer
parent - tal (DID på parent besked)
opretet_af
oprettet_dato
overskrift
besked
notify

Så når der oprettes en ny besked, er der ingen værdi i parent, men alle svar indeholder altså denne\'s DID.

PT er min SQL bare \"SELECT * FROM debat WHERE parent = NULL ORDER BY oprettet_dato;\"
Men hvorfor kan jeg ikke i samme SQL få den til at tælle antallet af svar. !?!

/Mark
Avatar billede erikjacobsen Ekspert
13. marts 2001 - 12:39 #1
noget i retning af

  select t1.overskrift,count(t2.did) as antalsvar
  from  debat as t1, debat as t2
  where t1.paren=null and t2.paren=t1.did group by t2.paren order by t1.oprettet_dato
   
Avatar billede eksperten1 Nybegynder
13. marts 2001 - 15:04 #2
Jeg har prøvet at tilrette den en smule, men den fungerer stadig ikke for mig...

Min tilrettede SQL ser sådan ud:
SQL = \"SELECT t1.overskrift, t1.besked, t1.oprettet_dato, t1.oprettet_af, t1.DID, COUNT(t2.did) AS antalsvar FROM debat as t1, debat as t2 WHERE t1.parent = 0 AND t2.parent = t1.DID GROUP BY t2.parent ORDER BY t1.oprettet_dato;\"


Og min fejl ser sådan ud:
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[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.
/include/functions.asp, line 20

Tak
/Mark
Avatar billede erikjacobsen Ekspert
13. marts 2001 - 16:08 #3
Jaaah, ok - den var også utestet :)

Men mon ikke - hvis overskrifterne er ens - vi ikke kan klare det
med

GROUP BY t2.parent,t1.overskrift

Hvis overskriften kun står i parent burde du nok dele det op i to
tabeller...
Avatar billede eksperten1 Nybegynder
14. marts 2001 - 09:36 #4
Hvad bruges GROUP BY til i denne sammenhæng, det er jo rent faktisk kun det COUNT(t2.did) AS antalsvar jeg er ude efter, jeg vil jo ikke vise de næste beskeder endnu, der skal brugeren videre til en anden side.

Overskriften står kun i parent, men jeg ville da være ret ærgerlig over at smide det ud over 2 tabeller (hvis jeg kan slippe)

/Mark
Avatar billede luttichau Nybegynder
14. marts 2001 - 11:21 #5
(\"Select * from test where test_kolonne = \'1\'; Select Count(*) From test as Antal;\").Nextrecordset

Det virker med Ms sql server.. men jeg ved jo ikke hvad du bruger .. sandsynligvis access?

Jeg går ud fra at pointen var at hente alt den data du skulle bruge ned i samme query ?
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