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 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 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