【发布时间】:2020-04-09 23:23:14
【问题描述】:
PHP 和 MySQL
这是一个设计和表格布局不佳的现有项目。已要求添加新的“功能”。
我想知道这样的查询是否可以放在一起(不是最好的查询)
快速总结:
已发布表单。
- 它获取一个 messageid 和一个(空白)subid 的表
如果发布了新帖子..上述情况再次发生..
- (messageid 和一个(空白)subid)
如果对现有帖子发表“评论”..
- 它获取一个 messageid 和一个与它正在发表评论的“父”帖子/线程匹配的 subid 的表
不幸的是,这一切都在同一张桌子上.. 似乎在多桌子布局或其他东西中会更好?
但是:
- 我知道父帖子(因为 subid col 是空的)
- 我知道子帖子(因为 subid col 具有与父帖子相匹配的值是评论)
- 所有帖子都有时间戳。
我如何获得查询,以及对以下内容进行分组/排序:
- 选择 -parent posts- 没有 subid
- 立即拥有所有 -child/comment 帖子- 在此下
并让它(最初?)按父 post_date 排序,然后是子/评论帖子(按他们的 post_dates 子排序)
这是一个示例表设置:
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', ''
更新:
地址:@Ngo Van Quan
为了他的回答。
这个:
select * from testtable
order by
(
CASE testtable.subid WHEN 0
THEN testtable.messageid*1000
ELSE testtable.subid*1000 + testtable.messageid END
),
testtable.messageid;
(我认为这是您打算提供的内容,而不是您发布的内容??)
**什么都不做
【问题讨论】:
标签: php mysql sql-order-by