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

问题描述 投票:-2回答:1

PHP和MySQL

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

我想知道是否可以将这样的查询组合在一起(对于查询而言不是最大的问题)

快速摘要:

形成一个表单发布。

  • 表获得消息ID和(空白)子ID

[如果有新帖子。.以上再次发生。.

  • ((messageid和一个(空白)subid)] >>
  • 如果对现有帖子发表“评论”。

  • 表获得一个messageid和一个子id,与它对其发表评论的'父'帖子/线程相匹配
  • 不幸的是,所有这些都在同一张表中。并且似乎可以在多张表布局中更好地使用它?

但是:

  • 我知道父母的职位(因为subid col为空)
  • 我知道子帖子(因为subid col具有与父帖子匹配的值是注释)
  • 所有帖子都有时间戳。
  • 我如何获得查询,以及对诸如以下内容进行分组/订购:

  • 选择-父帖子-不带subid
  • 在此下立即拥有所有-child / comment职位-
  • 并先按父post_date的顺序排序,然后按子/评论发布(按其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', ''

PHP和MySQL,这是一个现有项目,其设计和表布局不佳..已被要求添加新的“功能”。我想知道是否可以将这样的查询放在一起(不是...

php mysql sql-order-by
1个回答
0
投票

您可以使用以下事实来“作弊”:除非存在父帖子,否则无法发表评论,因此,SELECT * FROM table ORDER BY messageid, postdate会根据您的意愿将帖子后跟评论进行分组,但不一定保证帖子组按时间顺序排列。 (尽管如果按顺序分配messageid,则很可能是这种情况。)

© www.soinside.com 2019 - 2024. All rights reserved.