08. november 2005 - 18:47Der er
21 kommentarer og 1 løsning
count("stjerne") og group by
Hej
Jeg forsøger at samle en lang række sammentællinger i den samme query. Noget i retning af: (Select Count(*) from test where bla. bla.), (Select Count(*) from test where bla. bla.) .. osv ...
Det virker fint, men jeg vil godt kunne gøre noget lignende: (Select Count(*) from test Group By date), (Select Count(*) from test Group By anotherDate) .. osv.. Det virker bare ikke, idet det giver flere resultater i hver inner select.
Nogen der kan se hvad jeg vil og hvordan jeg kan gøre det?
Når du skriver "date" og "anotherDate" tror jeg at der er et eller andet du har misforstået. Man gruppere nemlig ikke på en værdi, men derimod på et felt i tabellen. Dette felt kan have mange forskellige værdier, og ideen med GROUP BY er netop at samle alle posterne med samme værdi til en post i outputtet fra SELECT'en. I den viste SQL, så tæller man netop op hvor mange poster der er med hver af de mulige værdier.
Ja ok nielle,.. så ny er jeg heller ikke. Jeg har mange forskellige felter jeg skal gruppere ud fra.
Jeg skal bruge en lang række tal som alle er sammentællinger af antal rækker i tabellen grupperet ud fra forskellige felter og med forskellige where clauses..
Man kunne vel argumentere for at du ikke opnår voldsomt meget performence ved at lave en stor select ud af en masse subselects. Hvorfor ikke bare lave dine individuelle selects fra din klient hvad end det så er :)
det kan godt ende med at blive løsningen bromer, men jeg havde planer om at samle det hele i en SP til sidst, så jeg synes bare det ville være fint at samle hele skidtet i en query først
Jeg er ikke klar over hvad du mener med at gøre det "enkeltvis"?
Men jeg kan da fortælle at:
SELECT ditDateFelt, Count(*) FROM test GROUP BY ditDateFelt
- giver dig en optælling af hvor mange rækker der er af hhv. datoVærdi1, datoVærdi2, datoVærdi3 og datoVærdi4 osv. osv. ... for samtlige de mulige værdier du har i din tabel. Count(*) giver ikke - i dette tilfælde - summen af samtlige rækker i alt.
en tabel med 10 rækker. det ene felt hedder Dato. Der er 8 forskellige datoer hvilket vil sige at der så er nogle datoer der går igen. Jeg vil godt have tallet 8 ud.
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.