webForumDet fria alternativet

Hämta hierarki med hjälp av nästlad sql

Databaser & SQL

1 svar · 459 visningar · startad av nestea

Medlem sedan apr. 20091 inlägg
Frågan#1

Hejsan!

Jag behöver lite assistans. Vill hämta ut alla mina kategorier, listade efter underkategoerier, t ex:

Kategori 1
Kategori 1.1
Kategori 1.2
Kategori 1.2.1
Kategori 1.2.2
Kategori 2
Kategori 2.1
Kategori 2.2
Kategori 2.3

osv, i en enda lång lista. Mina kategorier finns i en tabell som heter categoriers, med följande fält:
categoryID, name samt parentID, där parentID representerar id:t på den överordnade kategorin (den närmsta, dvs. en egenrelation).

Hur formulerar man en sådan fråga? Går ju inte att skriva t ex "SELECT * from categories where parentID = 0", eftersom den då bara skulle hämta de som inte har några föräldrar, vilket inte riktigt gör det jag vill eftersom jag även vill hämta de som har både föräldrar och barn, och i slutändan även barnen i sig.

Jag använder PHP och MySQL. Jag misstänker att krävs någon form av nästling för få till detta, men jag har svårt att se och formulera frågan.

Skulle tacksamt mottaga hjälp av någon som är ett strå vassare än jag på SQL.

Medlem sedan juni 20008 205 inlägg
#2

Finns inget riktigt bra sätt att göra det på i MySQL, om man inte är beredd att ändra datamodellen. Se http://dev.mysql.com/tech-resources/articles/hierarchical-data.html för en diskussion om alternativ.

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)