在 HTML 相似行中分组 MySQL table

Grouping together in HTML similar rows of a MySQL table

我有一个 MySQL 数据库 table,我在其中保存来自用户的反馈(列“feed”)。 他们都可以提问 (type = que, with ref = 0) 并回复 (type = ans)发布的问题。 “ref”列显示他们所指问题的“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 中显示此 table。我想把所有相同'ref'的答案放在一起,并在他们所指的问题下方显示。

使用 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。 有人遇到过类似的挑战吗?

以下查询将 return 由父 id 排序的 feedback table 中的记录,父线程中的记录出现在子线程之前。

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 小于它的子线程。