在HTML表格中将类似的行分组在一起

时间:2016-09-30 13:20:33

标签: php html mysql html-table sql-order-by

我有一个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。 有没有人遇到类似的挑战?

1 个答案:

答案 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总是小于其子节点。