Avatar billede bhn.314 Nybegynder
16. september 2003 - 11:50 Der er 14 kommentarer og
1 løsning

Rekursiv forespørgsel i DB

Jeg vil gerne hente Skåne og Sverige når jeg henter Malmø (i én forespørgsel) UDEN at jeg kender deres parent (dvs. parent ID er ikke en del af forespørgslen).

Eksempel:

tabel_a

org_name | org_id | org_parent
==============================
Danmark  |    1  |    0
Lolland  |    2  |    1
Søllested|    3  |    2
Sverige  |    4  |    0
Skåne    |    5  |    4
Malmø    |    6  |    5
Avatar billede arne_v Ekspert
16. september 2003 - 11:56 #1
Det tror jeg skal laves i applikationen og ikke i SQL.
Avatar billede bhn.314 Nybegynder
16. september 2003 - 12:00 #2
Jeg har set det gjort før jeg kan bare ikke huske hvordan....
Avatar billede bhn.314 Nybegynder
16. september 2003 - 12:00 #3
Det kan laves i Oracle...
Avatar billede bhn.314 Nybegynder
16. september 2003 - 12:07 #4
Nu har jeg brugt hele dagen i går på det...
Avatar billede dancni Nybegynder
16. september 2003 - 12:14 #5
Du skal bruge en Oracle specialitet som hedder CONNECT BY
Avatar billede bhn.314 Nybegynder
16. september 2003 - 12:26 #6
Måske, men man kan også gøre det vha. SQL95 standarden == ikke database specifik
Avatar billede bhn.314 Nybegynder
16. september 2003 - 12:26 #7
Det er trods alt bedre...
Avatar billede bhn.314 Nybegynder
16. september 2003 - 12:36 #8
.....Vi skal nemlig skifte til PostgreSQL i løbet af det næste år
Avatar billede arne_v Ekspert
16. september 2003 - 12:42 #9
Lyder som et skift ønsket af økonomi afdelingen fremfor IT afdelingen.

:-)
Avatar billede bhn.314 Nybegynder
16. september 2003 - 13:09 #10
Frivilligt tvang.....

Jeg må prøve noget mere nu når i eksperter ikke kan hjælpe...
Avatar billede coily Nybegynder
16. september 2003 - 16:00 #11
Den sku' virke

select org_name,org_id,org_parent from tabel_a
connect by prior org_parent=org_id
start with org_name='Malmø'
;
Avatar billede dancni Nybegynder
16. september 2003 - 16:15 #12
Prøv:
select x.org_id, x.org_name from tabel_a x
start with org_id = 4
connect by prior org_id =  org_parent

Postgres er ikke dårligt men har ihvertfald tidligere haft nogle problemer med index opdatering når der kom mere end 2 mio rækker i tabellerne.

Hvis der skal køres større systemer eller systemer med høje tilgængelighedskrav er der ingen vej udenom Oracle, DB2 eller MS-SQL
Avatar billede coily Nybegynder
16. september 2003 - 16:18 #13
til dancni: du vender org_id =  org_parent forkert her er rækkefølgen ikke ligegyldig din bruges til at komme fra top til bund dvs. fra sverige->skåne->malmø
Avatar billede dancni Nybegynder
16. september 2003 - 17:57 #14
tak :-)
Avatar billede bhn.314 Nybegynder
17. december 2003 - 14:58 #15
Øv, det ikke var muligt at løse gennem dette forum. Jeg lukker....
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