在 HTML 中将 MySQL 表的相似行组合在一起


Grouping together in HTML similar rows of a MySQL table

我有一个MySQL数据库表,我在其中保存了用户的反馈(">feed"列(。他们既可以提出问题(类型 = que,ref = 0(,也可以回复(类型 = 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显示此表。我想将所有带有相同"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"计算所有答案,并构建一个行跨度。有没有人遇到过类似的挑战?

以下查询将返回按父id排序的feedback表中的记录,父线程中的记录显示在子线程之前。

SELECT f.*
FROM feedback f
ORDER BY CASE WHEN f.ref = 0 THEN f.id ELSE f.ref END,
         f.id

解释:

ORDER BY使用两个排序条件。 首先,当ref为零(表示父线程(时,它按id排序,当不为零时按ref排序,表示子线程。 然后,要将父线程放在子线程之前,它按id排序。 这是有效的,因为父线程将始终具有小于其子线程的id