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

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