0

我正在尝试建立一个数据库来存储调查、问题、答案,以便我可以动态生成调查、捕获答案并从中报告。

问题 如何按以下顺序对结果进行排序?按 *surveys_questions.sort* 排序,但是,如果父 ID > 0,那么我需要将所有子代都放在它下面并按 *surveys_controls.sort* 对子代进行排序。

我有 5 张桌子:

  1. 包含每个调查名称的调查表(家庭收入调查)
  2. “问题”表用于存储调查中的所有问题。请注意 parent_id 列。当我想有子问题时,将使用这一次
  3. 用于存储可用工具的表。文本框、单选按钮、复选框……
  4. “答案”表
  5. 用于存储问题和相关工具之间关系的表。因此,例如问题 1 将具有工具 id 1(单选按钮),并且默认情况下被选中...

现在我遇到的问题是我无法正确排序结果或答案。

您可以在此链接http://sqlfiddle.com/#!2/2ee97/1上找到我的代码并运行查询

注意:我在这个链接 http://sqlfiddle.com/#!2/d9f6e3/4
上创建了一个小版本的问题, 如果有人可以帮助他解决这个问题,那么我将使用相同的解决方案来解决实际问题。

4

1 回答 1

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

这是提琴手

于 2013-06-30T05:55:22.153 回答