php - 在 HTML 中将 MySQL 表的相似行分组在一起

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

我有一个 MySQL 数据库表,用于保存用户的反馈(列“feed”)。 他们都可以提出问题(type = que,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 形式显示该表。我想将具有相同“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”的所有答案,并构建行跨度。 有人遇到过类似的挑战吗?

最佳答案

以下查询将从 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 使用两个排序标准。首先,当ref为零(表示父线程)时,它按id排序,或者当ref不为零时,按id排序,表示子线程。然后,为了将父线程放在子线程之前,它按 id 排序。这是可行的,因为父线程的 id 总是小于其子线程。

关于php - 在 HTML 中将 MySQL 表的相似行分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792563/

相关文章:

php - 按成本对数据库记录进行排序,但好像成本每天增加 1p?

php - mysql_fetch_assoc 函数替换

php - 如何在重定向时显示错误消息?

javascript - 为什么 innerHTML 返回 null

mysql - 如何获取Mysql的数据库脚本?

mysql - mysql中如何使用group by和count

php - 使 DDD 接口(interface)适应具体实现

javascript - 绑定(bind) ('keyup' ) 不处理加载 dom 后注入(inject)的内容

html - css动态设置<h>标签类型

php - PDO ...我做对了吗?