10. november 2004 - 18:42Der er
3 kommentarer og 2 løsninger
Hvis alle led i et hieraki?
Hejsa
Jeg har en mappe struktur i MySQL, hvor hver mappe har et "id" og "pid", hvor "pid" svare til et "id". På den måde kan man så for hver mappe, finde undermapper ved at finde alle de mapper hvis "pid" er lig mappen "id".
Meget trivielt.
Nu kunne jeg tænke mig, at hvis jeg var i mappen med id 20, så finde alle de led der er inden denne mappe. Jeg har prøvet at lave det med JOINS, men kan ikke rigtig finde ud af det, da det nemt bliver noget med at man helst skal hvor mange led der er før.
Er der ikke en måde, hvorpå mysql selv kan finde ud af dette? Der er jo trodsalt en del der har lavet samme tricks før mig :)
Du kan ikke med et enkelt SELECT vælge en mappe og alle dens undermapper, hvis de kan være vilkårligt dybt nestede. Det kræver noget vendorspecifikt SQL, oracle har en START WITH og CONNECT BY klausul som ville kunne klare det. Så vidt jeg ved har MySQL ikke noget tilsvarende.
Forslaget ovenover kan klare en mappe og niveauet under. Hvis der er en grænse for hvor dybt dit mappetræ kan blive, kan det udvides til at klare flere niveauer, for eksempel for en mappe, dens undermapper og deres undermapper ville det sådan ud: SELECT * FROM mappe m1, mappe m2, mappe m3 WHERE m1.id = 20 AND m2.pid = m1.id AND m3.pid = m2.id
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.