我有一个MySQL数据库表,用户可以保存反馈(列 feed ')。 他们都可以向发布的问题提问(类型 = que, ref = 0)并回复(类型 = ans)。 “参考”列显示了他们引用的问题的“ ID ”:
id username feed type ref
1 mr_x question_1 que 0
2 mrs_y question_2 que 0
3 mr_z answer_to_2 ans 2
4 mr_z answer_to_1 ans 1
5 mr_x answer_to_2 ans 2
现在,我试图用HTML显示这个表。我想将所有答案与同一个“参考”放在一起,并在他们提到的问题下方显示。
使用ORDER的PHP查询,例如:
"SELECT * FROM feedback ORDER BY ref ASC";
在这里不起作用。
HTML中我想要的输出是:
mr_x question_1 que 0
mr_z answer_to_1 ans 1
mrs_y question_2 que 0
mr_z answer_to_2 ans 2
mr_x answer_to_2 ans 2
我可能需要使用相同的' ref '计算所有答案,并构建一个rowspan。 有没有人遇到类似的挑战?
答案 0 :(得分:2)
以下查询将返回父feedback
订购的id
表中的记录,其中父线程中的记录显示在子项之前。
SELECT f.*
FROM feedback f
ORDER BY CASE WHEN f.ref = 0 THEN f.id ELSE f.ref END,
f.id
<强>解释强>
ORDER BY
使用两个标准进行排序。首先,当id
为零(表示父线程)时,它按ref
排序;如果不为零,则按ref
,表示子线程。然后,要将父线程放在子项之前,它将由id
命令。这是有效的,因为父线程的id
总是小于其子节点。