Avatar billede nightcrow Nybegynder
28. december 2004 - 13:23 Der er 17 kommentarer

flere count i samme sql

Hvordan kan jeg lave flere count's i samme sætning - i stil af nedenstående:

SELECT count(TabelKommentar.Kommentar Like "*konsulent*" or TabelKommentar.Kommentar Like "*besøg*") AS Besøgt,
count(TabelKommentar.Kommentar Like "*opsagt*" or TabelKommentar.Kommentar Like "*slet*") AS Nedskåret
count(TabelKommentar.Kommentar Like "*kundeserv*") AS Nedskåret
FROM TabelKommentar
Avatar billede Jørgen Kirkegaard Professor
28. december 2004 - 13:51 #1
Jeg har en grimmer én - så grim, at jeg næsten håber, at andre kan finde en bedre:
SELECT Sum(TabelKommentar.Kommentar Like "*konsulent*" or TabelKommentar.Kommentar Like "*besøg*") AS NegBesøgt, Sum(TabelKommentar.Kommentar Like "*opsagt*" or TabelKommentar.Kommentar Like "*slet*") AS NegNedskåret ...
FROM TabelKommentar;

NegBesøgt og NegNedskåret vil herefter -hver for sig- indeholde summen af rækker, som giver "true". True = -1 og False = 0. I et andet query negerer du så tallene...

Jeg vil iøvrigt opfordre til nye boolske felter, hvor man blot krydser af, men det har du nok filosoferet over.
Avatar billede Jørgen Kirkegaard Professor
28. december 2004 - 13:52 #2
Bom-bom - det var trods alt et svar og ikke en kommentar. (Håber de snart finder ud af at lave to knapper: Send Svar og Send Kommentar.)
Avatar billede nightcrow Nybegynder
28. december 2004 - 14:12 #3
Jeg får følgende fejlmeddelelse, når jeg prøver din kode:

"Der kan ikke være felter af typen Memo, OLE eller Hyperlink Object i aggregatargumentet (Tabelkommentar.kommentar)

Jeg kan heller ikke forstå, hvis man ikke kan lave hele søgningen i en query?
Avatar billede Slettet bruger
28. december 2004 - 14:16 #4
Prøv dette i en SQL

SELECT count(Kommentar) WHERE kommentar Like "*konsulent*" or Kommentar Like "*besøg*" AS Besøgt FROM TabelKommentar,
SELECT count(Kommentar) WHERE kommentar Like "*opsagt*" or Kommentar Like "*slet*" AS Nedskåret FROM TabelKommentar,
SELECT count(Kommentar) WHERE kommentar Like "*kundeserv*" AS Nedskåret FROM TabelKommentar
Avatar billede nightcrow Nybegynder
28. december 2004 - 14:26 #5
Den giver en syntakstfejl fordi der mangler en operator i forespørgelsesudtrykket
Avatar billede Slettet bruger
28. december 2004 - 14:35 #6
DOH mig selv!

SELECT count(Kommentar) FROM TabelKommentar WHERE kommentar Like "*konsulent*" or Kommentar Like "*besøg*" AS Besøgt ,
SELECT count(Kommentar) FROM TabelKommentar WHERE kommentar Like "*opsagt*" or Kommentar Like "*slet*" AS Nedskåret ,
SELECT count(Kommentar) FROM TabelKommentar WHERE kommentar Like "*kundeserv*" AS Nedskåret
Avatar billede Slettet bruger
28. december 2004 - 14:36 #7
Hmm og igen :-)

SELECT count(Kommentar) AS Besøgt FROM TabelKommentar WHERE kommentar Like "*konsulent*" or Kommentar Like "*besøg*" ,
SELECT count(Kommentar) AS Nedskåret  FROM TabelKommentar WHERE kommentar Like "*opsagt*" or Kommentar Like "*slet*" ,
SELECT count(Kommentar) AS Kundeserv FROM TabelKommentar WHERE kommentar Like "*kundeserv*"
Avatar billede nightcrow Nybegynder
28. december 2004 - 14:43 #8
Den giver ligeledes en syntakstfejl fordi der mangler en operator i forespørgelsesudtrykket
Avatar billede nightcrow Nybegynder
28. december 2004 - 14:50 #9
Nu skriver den, at den mangler et komma, men det kan jeg umiddelbart ikke se?

SELECT count(Kommentar) AS Besøgt FROM TabelKommentar WHERE kommentar Like "*konsulent*" or Kommentar Like "*besøg*",
SELECT count(Kommentar) AS Nedskåret  FROM TabelKommentar WHERE kommentar Like "*opsagt*" or Kommentar Like "*slet*",
SELECT count(Kommentar) AS Kundeserv FROM TabelKommentar WHERE kommentar Like "*kundeserv*"
Avatar billede Slettet bruger
28. december 2004 - 14:54 #10
Næ de er der da, har du hele fejlen?
Avatar billede nightcrow Nybegynder
28. december 2004 - 14:59 #11
Der er en syntakstfejl fordi der mangler et komma i forespørgelsesudtrykket "kommentar Like "*konsulent*" or Kommentar Like "*besøg*" ,
SELECT count(Kommentar) AS Nedskåret  FROM TabelKommentar WHERE kommentar Like "*opsagt*" or Kommentar Like "*slet*" ,
SELECT count(Kommentar) AS Kundeserv FROM TabelKommentar WHERE kommentar Like "
Avatar billede Slettet bruger
28. december 2004 - 15:03 #12
Det ser ud til at Access ikke vil køre 3 SELECT i en sætning så min løsning duer ikke, desværre.
Avatar billede Slettet bruger
28. december 2004 - 15:05 #13
Hvad med en UNION? Den gider dig så bare 3 rækker istedet for en.

SELECT count(Kommentar) AS Besøgt FROM TabelKommentar WHERE kommentar Like "*konsulent*" or Kommentar Like "*besøg*"
UNION
SELECT count(Kommentar) AS Nedskåret  FROM TabelKommentar WHERE kommentar Like "*opsagt*" or Kommentar Like "*slet*"
UNION
SELECT count(Kommentar) AS Kundeserv FROM TabelKommentar WHERE kommentar Like "*kundeserv*"
Avatar billede nightcrow Nybegynder
28. december 2004 - 15:09 #14
Jeg har også kørt en UNION, men så kan man ikke se "As Nedskåret" og "As kundeservice" da alt bliver lagt under Besøgt...
Jeg har nemlig selv siddet og kæmpet med det i længere tid ;o)
Avatar billede Slettet bruger
28. december 2004 - 15:14 #15
Ja men så ved du at første række er besøgt og anden række er nedskåret og tredje række er kundeservice da de jo returneres i den rækkefølge du beder om. Så skal du så bare køre i en løkke til dit rs er EOF.
Avatar billede nightcrow Nybegynder
28. december 2004 - 15:19 #16
Enig, men det er fordi de skal trækkes ud i en pivottabel, så jeg hele tiden kan følge udviklingen i de kommentarer der bliver sat ind.
Og der virker den nemlig ikke, hvis de ikke har et unikt navn ;o)
Avatar billede jensriis Novice
30. oktober 2005 - 15:08 #17
Hvad med noget i denne retning:
SELECT "konsulent" as Status, count(Tabel1.kommentar) as Antal
FROM Tabel1 where Tabel1.kommentar like "*konsulent*"
union all
SELECT "besøgt", count(Tabel1.kommentar)
FROM Tabel1 where Tabel1.kommentar like "*besøgt*"
;
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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