webForumDet fria alternativet

sökväg i träd

2 svar · 378 visningar · startad av daniel_ra

daniel_raMedlem sedan jan. 2002381 inlägg
#1

hej hej

jag har skapat en trädstruktur där saker hör till olika kategorier. databasen ser ut som följande

ID | namn | subID

varje ID hör alltså till ett annat ID, exempel:

ID | namn | subID

0 | root | 0
1 | fordon | 0
2 | bil | 2
3 | båt | 2

jag vill kunna skriva ut sökvägen till en speciell kategori. exempelvis

root/fordon/bil

detta så att jag lättare kan navigera mellan de olika kategorierna. Hur skulle jag kunna skriva min sqlfråga för få ut detta för en speciell kategori?

emissionMedlem sedan dec. 19996 721 inlägg
#2

Om du har en begränsad mängd nivåer kan du få ut det i en fråga.

SELECT ISNULL('/' + t3.namn,'') + ISNULL('/' + t2.namn,'') + '/' + t1.namn 
FROM tabellen t1
LEFT OUTER JOIN tabellen t2 ON t2.ID=t1.subID
LEFT OUTER JOIN tabellen t3 ON t3.ID=t2.subID

Annars får du göra en rekursiv sökning (sök ut namnet, sedan namnet för föräldern, sedan förälderns förälder etc.). Om du har en databas som stöder triggers så kan du lösa det på annat sätt också.

PaceMedlem sedan juni 20019 024 inlägg
#3

Om det är obegränsat med nivåer är det lättare med en så kallad "tree traversal".

Finns en bra guide här:
http://www.sitepoint.com/article/hierarchical-data-database

Samt:
http://en.wikipedia.org/wiki/Tree_traversal

134 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)