Avatar billede teamdev Novice
14. december 2011 - 23:25 Der er 4 kommentarer og
1 løsning

Count fra et select

Jeg har denne her SLQ streng der blot vælger fra nogle tabeller

SELECT distinct PN_NAVN AS Brugernavn, PN_INIT AS 'Bruger ID', T_ADMINDEL.AI_ADMBET AS Afdeling, T_PERROLLE.PR_TITTEL AS 'Brugertype(Rolle)' FROM t_person, T_PERROLLE , T_PERNAVN, t_admindel where PR_PEID = PN_PEID and t_person.system_id = PN_PEID and pr_admid = t_admindel.system_id and pr_stdrolle = 1


Nu vil jeg så hjertens gerne lige tælle antallet af records ovenstående select finder, men det vil ikke som jeg vil.
Har prøvet med
SELECT COUNT(*) from (SELECT distinct PN_NAVN AS Brugernavn, PN_INIT AS 'Bruger ID', T_ADMINDEL.AI_ADMBET AS Afdeling, T_PERROLLE.PR_TITTEL AS 'Brugertype(Rolle)' FROM t_person, T_PERROLLE , T_PERNAVN, t_admindel where PR_PEID = PN_PEID and t_person.system_id = PN_PEID and pr_admid = t_admindel.system_id and pr_stdrolle = 1)

men så får jeg bare Incorrect syntax near ')'.

og jeg har nok stirret mig temmelig blind på det

Så please ....
Avatar billede Syska Mester
14. december 2011 - 23:46 #1
Da det er en "derived table" skal du have et alias med ellers ved den ikke hvad den hedder.

SELECT COUNT(*) from
(SELECT distinct PN_NAVN AS Brugernavn, PN_INIT AS 'Bruger ID', T_ADMINDEL.AI_ADMBET AS Afdeling, T_PERROLLE.PR_TITTEL AS 'Brugertype(Rolle)' FROM t_person, T_PERROLLE , T_PERNAVN, t_admindel where PR_PEID = PN_PEID and t_person.system_id = PN_PEID and pr_admid = t_admindel.system_id and pr_stdrolle = 1) as derived_table
Avatar billede teamdev Novice
14. december 2011 - 23:55 #2
så simpelt  :-)

og da jeg skal bruge output som variabel har jeg blot sat as count ind i starten, var det der forvirrede mig , 2 as ...

SELECT COUNT(*) as count from
(SELECT distinct PN_NAVN AS Brugernavn, PN_INIT AS 'Bruger ID', T_ADMINDEL.AI_ADMBET AS Afdeling, T_PERROLLE.PR_TITTEL AS 'Brugertype(Rolle)' FROM t_person, T_PERROLLE , T_PERNAVN, t_admindel where PR_PEID = PN_PEID and t_person.system_id = PN_PEID and pr_admid = t_admindel.system_id and pr_stdrolle = 1) as derived_table

så kørte det.

Takker, Smid et svar :-)
Avatar billede Syska Mester
15. december 2011 - 00:26 #3
svar.

Har selv oplevet noget ala samme problem for år tilbage ... et eller andet sted mærkeligt den vil have det alias med... GRR.
Avatar billede teamdev Novice
15. december 2011 - 07:20 #4
Hmmm hvis man lige tænker over det så er det jo fordi den i virkeligheden smider resultat ind i en virtuel tabel som vi her har kaldt derived_table (den kunne også have heddet kurt)

Så sætningen kan (for forståelsens skyld) oversættes  til
SELECT COUNT(*) as count from derived_table
Avatar billede Syska Mester
15. december 2011 - 12:52 #5
ja, men derfor kunne godt den lige være lidt klogere og selv smide en tempNavn ind :-)
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
Computerworld tilbyder specialiserede kurser i database-management

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