2014-06-12 197 views
-1

我已經創建了一個父 - 子關係表(部分/子部分或類別。子類別)。我想先通過父'SectionSort'字段進行排序,然後通過兒童'SectionSort'字段進行排序。MySQL根據排序字段值對父/子進行排序

實施例的表:

IDSection | SectionParentID | SectionSort | SectionName 
------------------------------------------------------- 
2  |  0  |  2  | Chapter 2   
1  |  0  |  1  | Chapter 1 
5  |  1  |  1  | Subchapter 1 
4  |  1  |  3  | Subchapter 3 
3  |  1  |  2  | Subchapter 2 
7  |  2  |  2  | Sunchapter 5 
6  |  2  |  1  | Subchapter 4 

「SectionSort」日提交可以是dynamicaly變化通過上下移動,以根據列的用戶需求。

我需要得到以下結果:

IDSection | SectionParentID | SectionSort | SectionName 
------------------------------------------------------- 
1  |  0  |  1  | Chapter 1   
2  |  0  |  2  | Chapter 2 
3  |  1  |  1  | Subchapter 1 
4  |  1  |  2  | Subchapter 2 
5  |  1  |  3  | Subchapter 3 
6  |  2  |  1  | Sunchapter 4 
7  |  2  |  2  | Subchapter 5 

或者是這樣的:

Chapter 1 
-Subchapter 1 
-Subchapter 2 
    -..... 
-SubChapter 3 
Chapter 2 
-Subchapter 4 
-Subchapter 5 

這是我嘗試,但只工作到一個新的水平不LEVE 3〜N:

SELECT EvalQuestions.*, Child.SectionSort AS Child_SectionSort, Parent.SectionParentsIDs AS Parent_SectionParentsIDs, Parent.SectionParentNames AS Parent_SectionParentNames, 
Parent.SectionName AS Parent_SectionName, Parent.SectionSort AS Parent_SectionSort, Parent.SectionParentID AS Parent_SectionParentID 
FROM EvalQuestions INNER JOIN (EvalSections Parent INNER JOIN EvalSections Child ON 
Parent.SectionParentID = Child.IDSection) ON 
EvalQuestions.SectionID = Parent.IDSection 
ORDER BY Parent.SectionSort, Child.SectionSort, QuestionSort 
+0

只用了一章和子章就很簡單。但是,如果有潛在的無限級別,那麼不可能使用您當前的設計(mysql不支持遞歸查詢)。調查嵌套集模型,這將允許多層次的父母/子女關係。另一種方法是嘗試構建在自定義mysql函數中執行查詢的結構。 – Kickstart

回答

0

試試這個。

select * from Table order by SectionParentID asc,SectionSort asc. 
+0

謝謝,但每個部分和子部分有他們的動態(經常由用戶改變)排序順序,我不想按SectionParentID。每個部分可以有無限的深度depth.I認爲是必要的東西在查詢遞歸,但我不知道如何做到這一點 – ArtGilbert

+0

我沒有確切地知道你想說什麼。你可以編輯你的問題並給出例子。 –

相關問題