Avatar billede madsfriburg Nybegynder
08. december 2001 - 15:49 Der er 9 kommentarer og
1 løsning

træstruktur

Jeg har en tabel, hvor der udover det unikke \"id\" (primary key) er en kolonne med navnet \"over_id\". Dette over_id relaterer direkte til en anden række (\"roden\" i træstrukturen).

Altså: En post/række\'s over_id indeholder en anden række\'s id.
Dette betyder jo, at den første række i hele tabellen kan være \"udgangspunkt\" (roden) for alle de andre rækker i hele tabellen. Det er den dog ikke, jeg har en masse rødder, med en masse relaterede \"under-rækker\" - et stort \"rod-net\" (altså en såkaldt træstruktur).

Nu skulle det være skåret i pap! (-;
Det jeg ikke kan finde ud af, er at lave en forespørgsel i sql, som via roden (lad os sige rækken med id nummer 22, finder alle dens \"under-relationer\".
Under-relationer er altså alle rækker med et over_id der hedder 22, og alle rækker med over_id til disse rækker, osv. osv.

Måske har I set det før, måske er det endda såre simpelt (det håber jeg da...) - eller også er det bare sort snak (dårligt formuleret).
((-:

Mvh. Mdas
Avatar billede madsfriburg Nybegynder
08. december 2001 - 15:49 #1
Ja, jeg hedder nu Mads. \\-:
Avatar billede madsfriburg Nybegynder
09. december 2001 - 12:06 #2
Nu har jeg forhøjet points, og sig lige til hvis det er helt ude i skoven formuleret!

||| Vi har altså at gøre med 2 kolonner i en tabel.
Den første kolonne er tabellens primary key og hedder \"id\".
Den anden kolonne hedder \"over_id\" og indeholder nummeret (id\'et) på en anden række.

Når der således oprettes en ny række får den et nyt id, men den får også et over_id som f.eks. er nummeret (id\'et) på den række der blev oprettet for 10 dage siden.

Træstrukturen bruges f.eks. i et forum, hvor der oprettes et spørgsmål, hvortil der knyttes svar og kommentarer, og til disse svar og kommentarer kan man knytte yderligere svar og komm.
(Med over_id\'et er hele dette kaos ordnet, men hvordan fanden søger man med SQL igennem sådanne \"interne\" relationer - das ist meiner frage!)

((-: Svar helst ikke på tysk,
mvh. Mads.
Avatar billede bennytordrup Nybegynder
10. december 2001 - 08:21 #3
select id, over_id
from  treetable
where (id=22) or (over_id=22)

Dette finder alle poster i tabellen, hvor id er 22 eller over_id er 22.
Avatar billede pierrehusted Nybegynder
10. december 2001 - 09:44 #4
Benny:
Men det mangler vist at finde de poster der har ID fra de poster der har 22 i Over_ID i sit over_id.

Jeg prøvede at kigge på den her igår, men der kunne jeg slet ikke tænke - sådan er det jo om søndagen. Nu prøver jeg lige igen.


Jeg ved ikke hvordan man kan søge uendeligt ned i niveauer, men man kan gøre sådan noget her :

Select *
from tabelnavn
where ID = 22 or over_id = 22
or over_id in (select id from tabelnavn where over_id = 22)



Avatar billede aho_metier Nybegynder
10. december 2001 - 21:02 #5
Det kan ikke lade sig gøre, at lave en forespørgsel som rekursivt danner din træstruktur.

Hertil er du nødt til at lave en anden løsning,
evt et view med en begrænset dybde, ellers skal du lave en stored procedure.
Avatar billede madsfriburg Nybegynder
10. december 2001 - 21:16 #6
>>> tak for din tankekraft, pierrehusted, du har forstået mit spm. Den er lidt tung i det, og jeg er helt ny med sql - så du kan godt forestille dig hvordan min hjerne har set ud i et par dage... ((-:
Jeg ved desværre derfor heller ikke helt hvad aho metier snakker om, når han nævner \'begrænset dybde\' og \'stored procedure\'??
Men jeg vil tro at vi stadig taler sql og ikke ASP, el.lign. For jeg har også været ude i nogle løkker og så fremdeles, men det er vist mest optimalt at løse den i ren sql.

Roder med pierre\'s.......... (-;
Avatar billede madsfriburg Nybegynder
10. december 2001 - 21:27 #7
>>> Pierre, du lader ikke til at have problemer med at tænke, når det altså ikke lige er søndag - den virker sgu!!!! Helt perfekt, og søger (tilsyneladende) \'uendeligt\' i dybden af over_id\'er.

Du burde jo mindst have en kold fadbamse, eller god kop kaffe, men du må nøjes med 120 flade point.
Hov, du skal lige oprette et svar, hvis du vil have point!!!!

Tusind tak for hjælpen!
Mvh. Mads.
Avatar billede pierrehusted Nybegynder
11. december 2001 - 00:22 #8
OK.
Avatar billede nih Novice
12. december 2001 - 03:34 #9
Dette er ikke et svar - jeg er lidt sent på den.

prøv at kigge på det her spg.mål:

http://www.eksperten.dk/spm/96738

Det er vist lidt det samme - her har du mulighed for at bestemme hvad niveau i træstrukturen du vil søge i.

Niels
Avatar billede madsfriburg Nybegynder
12. december 2001 - 22:41 #10
>>> Mange tak, nih! (-;
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