2014-02-26 103 views
0

我想確定是否有一種方法來排序由開始/結束列組成的MySQL表的行。 (也可以認爲是父/子關係或其他鏈接列表排列)排序/排序MySQL中的數據對?

這裏的數據當前存儲的例子:

id  start  finish 
2  stepthree stepfour 
6  stepfive  stepsix 
9  stepone  steptwo 
78  stepfour  stepfive 
121  steptwo  stepthree 

(此ID號是不相關的,只是使用它們來指示任意數據的附加列)

我想排序/顯示這些行的順序,假設我總是以「stepone」開始,遍歷開始 - >完成鏈,每個「完成」隨後是該行作爲「開始」。

desired output 
9  stepone  steptwo 
121  steptwo  stepthree 
2  stepthree stepfour 
78  stepfour  stepfive 
6  stepfive  stepsix 

通常不應有任何分支/分裂,只是一系列連續的步驟或狀態。我不能使用簡單的alpha排序(在我的情況下,開始和結束值是由客戶創建的代碼),但無法找出任何其他方式使用SQL來排序。我可以使用大多數語言以編程方式執行此操作,但難以僅使用SQL進行操作。

任何聰明的想法?

回答

0

我會建議讓每個步驟都映射到其優先順序的另一個表。

然後,您可以編寫一個查詢,按開始步驟的優先順序對每一行進行排序。

+0

是的,儘管如此,我仍然需要2個表來維護(並小心地保持同步),但實際上只有其中一個表需要保留步驟順序。如果有人在某個地方增加了額外的步驟,我還必須記得使用相同的信息更新該次表。我希望找到一種通過遍歷一個原始表來獲得排序順序的方法。 – user3357493