Avatar billede knowit-mmp Nybegynder
03. maj 2004 - 10:19 Der er 4 kommentarer og
1 løsning

Nestede SQL

Jeg skal lave en PL/SQL kommando der i korte træk går på at hente data fra 2 tabeller med en nested sql-kommando, som er afhænging af data i tabel 1. Samtidig er data fra tabwel 2 afgrænset af data i tabel 1.

Eks.

SELECT TABEL1.FELT0,
IF (Tabel1.Felt1<>'') THEN
(SELECT SUM(TABEL2.FELT1) FROM TABEL2 WHERE TABEL2.FELT2 BETWEEN TABEL1.FELT2 and TABEL1.FELT3)
ELSE
(SELECT SUM(TABEL2.FELT1) FROM TABEL2 WHERE TABEL2.FELT2=TABEL1.FELT0)
END IF
FROM TABEL1
WHERE TABEL1.FELT0 BETWEEN 'x' and 'y'

I ovenstående eksempel er TABEL1 en STAMDATA-Tabel og TABEL2 er TABEL1's tilhørende transaktionstabel.

Jeg har ingen problemer med at oprette en PL/SQL kommando, der benytter sig af en nestet SQL, men når den bliver kombineret med en IF..THEN..ENDIF, så giver den en fejl, og jeg har stirret mig blind på det.

Det er meget vigtig at det hele ender som en enkelt PL/SQL kommando.

Er der nogen derude, der har en løsning på det?

/Martin
Avatar billede Slettet bruger
03. maj 2004 - 10:31 #1
Du kan brug NVL2:

SELECT TABEL1.FELT0,
NVL2(
    Tabel1.Felt1,
    (SELECT SUM(TABEL2.FELT1) FROM TABEL2 WHERE TABEL2.FELT2 BETWEEN TABEL1.FELT2 and TABEL1.FELT3),
    (SELECT SUM(TABEL2.FELT1) FROM TABEL2 WHERE TABEL2.FELT2=TABEL1.FELT0)
)
FROM TABEL1
WHERE TABEL1.FELT0 BETWEEN 'x' and 'y';
Avatar billede knowit-mmp Nybegynder
03. maj 2004 - 10:35 #2
Den sad lige i skabet, takker og bukker...

/Martin
Avatar billede knowit-mmp Nybegynder
03. maj 2004 - 10:42 #3
Jeg ville meget gerne acceptere svaret men der sker intet, når jeg trykker på accepter....nogen ide om hvorfor?

/Martin
Avatar billede teepee Nybegynder
03. maj 2004 - 13:53 #4
Jeg tror at du lige skal markere navnet (joern_h) i listen, selvom der kun er én
Avatar billede knowit-mmp Nybegynder
05. maj 2004 - 11:26 #5
Takker...:-)
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