Avatar billede mikkel_strack Nybegynder
04. december 2007 - 01:45 Der er 6 kommentarer og
2 løsninger

Hvordan laver jeg smartest et udtræk til at konstuere en menu?

Hej,

Jeg har på en hjemmeside en menu i to lag. Tabellerne ku se ud som flg.:
Tabel1: ID, Text
Tabel2: ID, Text, ParentID

Hvordan laver man dette udtræk bedst? Skal jeg bare lave en INNER JOIN på tabellerne, og så i koden køre udtrækket igennem og lave menuen derfra, eller er der i virkeligheden så få ressourcer forbundet med at lave flere udtræk, at jeg først kan hente fra Tabel1 og derefter et udtræk i Tabel2 for hver række i udtrækket fra Tabel1.


Mvh, Mikkel
Avatar billede arne_v Ekspert
04. december 2007 - 02:11 #1
Jeg er ret sikker på at en join vil performe bedre !
Avatar billede hrc Mester
04. december 2007 - 09:28 #2
Hvis du laver scriptet således får du først det øverste niveau. Dernæst kommer underpunkterne. Så vidt jeg kan se slipper du ikke for at gennemløbe menuen 2 gange for at opbygge de to niveauer (selvom jeg for mange mange år siden, på et internt Oracle kursus, mindes noget der faktisk genererede et hierarkisk output - kan være det bare er Oracle):

select m.id, m.menutekst_id, m.menutekst_parent_id, mt.tekst
from menu m
join menutekst mt on (mt.id = m.menutekst_id)
order by m.menutekst_parent_id, m.id
Avatar billede mikkel_strack Nybegynder
04. december 2007 - 12:14 #3
Det bliver sådan jeg gør det.

Smid et svar begge, så dele I i porten :)
Avatar billede arne_v Ekspert
04. december 2007 - 15:13 #4
ok
Avatar billede arne_v Ekspert
04. december 2007 - 15:13 #5
om igen
Avatar billede arne_v Ekspert
04. december 2007 - 15:13 #6
hrc>

Det Oracle er rigtigt god til er menuer i vilkaarlig dybde. Fast to lag er ikke noget
problem i nogen database.
Avatar billede hrc Mester
04. december 2007 - 15:56 #7
arne: Er ovenstående "select" så måden at gøre det på? Jeg synes ikke den er voldsom smart, men man kan jo ikke lave en query der har variabelt antal felter i resultatet?
Avatar billede arne_v Ekspert
04. december 2007 - 23:57 #8
det må være måden
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