2014-04-16 27 views
0

我有一個名爲「Categories」的數據庫設置,其中可以創建類別並擁有父級設置 父級類別在Parent列下設置爲「0」,其中id 。將用於設置其子類別多個mysql連接和正確的顯示順序

嵌套類別可以是4類深:

Parent >> Subcategory >> subcategory >> subcategory 

我有查詢設置爲這樣:

SELECT *, 
cat_a.id AS A_ID, cat_a.Title AS A_Title, cat_a.Parent AS A_Parent, 
cat_b.id AS B_ID, cat_b.Title AS B_Title, cat_b.Parent AS B_Parent, 
cat_c.id AS C_ID, cat_c.Title AS C_Title, cat_c.Parent AS C_Parent, 
cat_d.id AS D_ID, cat_d.Title AS D_Title, cat_d.Parent AS D_Parent 
FROM Categories AS cat_a 
LEFT JOIN Categories AS cat_b 
    ON cat_a.Parent = cat_b.id 
LEFT JOIN Categories AS cat_c 
    ON cat_b.Parent = cat_c.id 
LEFT JOIN Categories AS cat_d 
    ON cat_c.Parent = cat_d.id 
WHERE cat_a.Username='$UserID' 
GROUP BY cat_a.id 

根據需要顯示信息,但排序不正確。 我期待有嵌套顯示,以便每個子類別與直屬父將循環,就像這樣:

Universe 
-> Milky Way 
--> Planets 
---> Earth 
---> Mars 
--> Moons 
---> Titan 
---> Europa 
-> Andromeda 
--> Unknown Planets 
---> Planet X 

等。

感謝您的時間!

回答

1

如果我正確理解數據結構,則不需要group by。相反,使用:

order by cat_a.id, cat_b.id, cat_c.id, cat_d.id 
+0

只有通過id命令而不會工作,如果項目出現故障,或在以後創建。例如,在其他所有內容之後創建「衛星」,這將排序到數組的底部。 – Andrew

+0

@Andrew。 。 。 「衛星」將根據它屬於哪個「A」類別在該組中排序。這可能是第一組,最後一組,或者中間的任何地方。 –