2013-06-29 57 views
0

我正在嘗試構建一個數據庫來存儲調查,問題和答案 ,以便我可以動態生成調查,捕獲答案並將其報告出來。如何使用MySQL中的多個條件對結果進行排序

問題 如何按以下順序對結果進行排序? Order * by * survey_questions.sort *然而,如果父母ID> 0,那麼我需要把所有的孩子帶到它下面,並通過* surveys_controls.sort *對孩子進行排序。

我有5個表:

  1. 調查表來保存每個調查(家庭收入調查)的名稱
  2. 「問題」表中的所有問題,存儲與調查。請注意parent_id列。這一次將用於當我想有子問題
  3. 一個表來存儲可用的工具前。文本框,單選按鈕,複選框....
  4. 「Answers」表
  5. 一個表格,用於存儲問題與關聯工具之間的關係。因此,例如問題1將有工具ID 1(單選按鈕),它是默認選擇...

現在我遇到的問題是,我無法排序結果或正確答案。

你可以找到我的代碼,而這個鏈接上運行查詢 http://sqlfiddle.com/#!2/2ee97/1

注:我創建了這個鏈接 http://sqlfiddle.com/#!2/d9f6e3/4
對這個問題的smalled版本,如果有人能幫助他解決這個問題那麼我將使用相同的解決方案來解決實際問題。

+0

有安靜一點的代碼在這裏。也許你可以製作一個小提琴手http://sqlfiddle.com/並在表格中插入一些工作值? – Gimmy

+0

它不適合我,因爲max模板是8000您的模板ddl太大(超過8000個字符)。請提交一個較小的DDL。 – Mike

+0

@Gimmy在這裏你去http://sqlfiddle.com/#!2/2ee97/1 – Mike

回答

0

試試這個你ORDER BY線:

ORDER BY CASE WHEN q.parent_id = 0 THEN q.question_id WHEN q.parent_id !=0 THEN q.parent_id = 0 END ASC, q.sort, t.sort 

這裏是Fiddler

+0

謝謝。這個答案還努力這個工作\t \t \t \t \t \t \t \t \t ORDER BY CASE WHEN q.parent_id = 0,則q.question_id ELSE q.parent_id END ASC,q.question_id,q.sort,t.sort – Mike

相關問題