13. januar 2015 - 21:03 Der er 10 kommentarer og
1 løsning

Select og Select og Select

Jeg har et ønske om, at jeg så få resultaterne fra flere sql sætninger ud i samme tabel...

select count(w) as X from...
select sum(m) as Y from ...
select count(t) as Z from ...


Resultat er en tabel med tre kolonner og en record
X    Y    Z
10  20    15

eller to kolonner og tre records
Kolonne  Value
X        10
Y        20
Z        15


select sætninger henter fra forskellige tabeller etc. Det skal bruges igen og igen i en rapport, og i virkeligheden er der 10-12 select's, som skal returnere værdier, og jeg ville gerne nøjes med et kald til databasen...
Løsningen må være almindelig sql eller en stored procedure eller ?
Avatar billede arne_v Ekspert
14. januar 2015 - 02:26 #1
Den nemme loesning maa vaere:

select 'X',count(w) as VAL from...
union
select 'Y',sum(m) as VAL from ...
union
select 'Z',count(t) as VAL from ...
Avatar billede Slettet bruger
14. januar 2015 - 07:02 #2
Som én record:
(select count(w) from ...) as X
,(select sum(m) from ...) as Y
,(select count(t) from ...) as Z
14. januar 2015 - 07:04 #3
Ja tak, UNION vil samle dem, men de individuelle As X, As Y, As Z navne forsvinder jo på den måde, og dem ville jeg gerne have med, hvis det kunne lade sig gøre
Avatar billede arne_v Ekspert
14. januar 2015 - 15:15 #4
De forsvinder ikke da jeg selected en streng med 'navn'.

:-)
14. januar 2015 - 17:02 #5
Undskyld Arne, det blot jeg som er er blind :-)
Så prøver jeg igen i aften også med rahp's forslag - tak
15. januar 2015 - 20:22 #6
Arne - Union virker fint, når ellers jeg følge anvisningerne - smider du et svar

RAHP - jeg kan ikke få din kode til at virke, giver fejl ved AS på alle rækker
15. januar 2015 - 22:15 #7
Arne - brug af union på denne måde efterlader kolonnerne uden navne... kan det fikses eller endnu bedre kan man måske putte kolonneoverskrifterne ind  som første række af værdier?

Description  |  Monthly Avg
X            |  10
Y            |  15
Avatar billede arne_v Ekspert
16. januar 2015 - 02:10 #8
proev om ikke foelgende giver dig  kolonne navn:

select 'X' as DESCRIP,count(w) as COUNTVAL from...
union
select 'Y'as DESCRIP,sum(m) as COUNTVAL from ...
union
select 'Z'as DESCRIP,count(t) as COUNTVAL from ...
Avatar billede arne_v Ekspert
16. januar 2015 - 02:11 #9
rahp's burde ogsaa virke

SELECT (select count(w) from ...) as X
,(select sum(m) from ...) as Y
,(select count(t) from ...) as Z
16. januar 2015 - 08:33 #10
Tak arne - kommer du med et svar
Avatar billede arne_v Ekspert
16. januar 2015 - 14:09 #11
svar
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