Avatar billede brhino Nybegynder
01. juli 2008 - 16:02 Der er 1 kommentar

Rekursiv sql

Hej med jer

Mit spørgsmål er nok let at svare på for de fleste af jer SQL folk, men inden jeg begiver mig ud i at forsøge mig med database programmering er der et spørgsmål der skal besvares.

Jeg er i gang med et lille hobby programmerings projekt hvor jeg skal beregne nogle forskellige ting. Det jeg skal er at oprette en masse punkter (objekter) som er forbundet indbyrdes. Et eksempel :
5 punkter (1-5)

pkt. 2 forbundet til pkt. 5
pkt. 5 forbundet til pkt. 1 og pkt. 3
pkt. 3 forbundet til pkt. 4

Dem som kender lidt til programmering kan se at det minder om et binært træ. Mit spørgsmål går så på om man kan lave en slags rekursiv sql kommando, således at jeg finder punktet længst væk (pkt. 4) først, og dernæst pkt. 3, pkt. 1, pkt. 5 og til sidst pkt. 2. At lave det i alm. kode er ikke noget problem, men jeg vil gerne kunne indskyde flere pkt. F.eks mellem 2 og 5.

Forvirret ?? Håber jeg ikke, men altså.. Kan man lave en form for rekursiv sql kommando ?
Avatar billede pidgeot Nybegynder
01. juli 2008 - 16:13 #1
Det kommer lidt an på din databasestruktur. Hvis du laver det med en enkelt reference til et "parent"-ID - så hver punkt refererer til punktet ovenover - så kan du nemlig ikke bare lige gøre det med vilkårlige dybder. (MSSQL har nogle udvidelser, men mig bekendt gælder det samme ikke for MySQL)

Kig i stedet på nested set-modellen - den er nemmere at arbejde med når du har hierarkiske data i en database. Der er en artikel om den på MySQLs side, inkl. hvordan du bruger den - det burde kunne de ting du efterspørger uden alt for store problemer: http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
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