可以通过查询(MySQL)完成吗?

PHP和MySQL

这是一个现有项目,其设计和表布局都很差。已要求添加新的“功能”。

我想知道是否可以将这样的查询放在一起(不是最适合查询的东西)

快速摘要:

形成一个表格。

  • 表中它得到一个messageid和一个(空白)subid

如果发布新帖子..以上再次发生..

  • (messageid和一个(空白)subid)

如果对现有帖子做出“评论”。

  • 表格,它得到一个messageid和一个子ID,该子ID与它对其发表评论的“父”帖子/线程匹配

不幸的是,这些都在同一个表中。似乎在多表布局中还是更好的方法?

但:

  • 我知道家长的帖子(因为subid col为空)
  • 我知道子帖子(因为subid col具有与父帖子匹配的值是对此的评论)
  • 所有帖子都有时间戳。

我如何获得查询以及如何对诸如以下内容进行分组/订购:

  • 选择-父帖子-不带subid
  • 在此下立即有所有-child / comment帖子-

并按照父post_date的顺序(最初?)排序,然后按child / comment帖子的顺序(按其post_date的顺序排序)

这是表格设置示例:

http://sqlfiddle.com/#!9/19dae/2/0

不知道这里是否需要简单的GROUP BY?还是需要进行更高级的子选择?

该顺序需要由父帖子“ post_date”“首先”完成,并(以某种方式)在查询/数组返回中的“父”帖子之后获得要注入的下一个子/注释帖子。

这是我想要的结果顺序:

期望的结果:

'2020-03-30 09:48:50', 'Poster A', '49203-30032020094850000000', ''
'2020-03-30 09:50:50', 'Poster B', '49204-30032020095050000000', '49203-30032020094850000000'
'2020-04-03 09:55:50', 'Poster C', '49205-03042020095550000000', '49203-30032020094850000000'
'2020-03-31 09:48:50', 'Poster C', '49205-31032020094850000000', ''
'2020-04-03 09:40:50', 'Poster B', '49204-03042020094050000000', '49206-010432020094850000000'
'2020-04-01 09:48:50', 'Poster D', '49206-010432020094850000000', ''
'2020-04-02 09:49:50', 'Poster E', '49207-02042020094950000000', ''