Php 这可以通过查询(MySQL)实现吗?
PHP和MySQL 这是一个设计和表格布局较差的现有项目。。已请求添加新的“功能” 我想知道这样的查询是否可以组合在一起(不是最棒的查询) 快速总结: 制作了一张表格Php 这可以通过查询(MySQL)实现吗?,php,mysql,sql-order-by,Php,Mysql,Sql Order By,PHP和MySQL 这是一个设计和表格布局较差的现有项目。。已请求添加新的“功能” 我想知道这样的查询是否可以组合在一起(不是最棒的查询) 快速总结: 制作了一张表格 表获取一个messageid和一个(空白)子id 如果有新的职位。。上述情况再次发生 (messageid和(空白)子ID) 如果对现有帖子发表“评论” 表获取一个messageid和一个子id,该子id与它要对其进行注释的“父”帖子/线程相匹配 不幸的是,这些都在同一张表中。。似乎在多表布局或其他情况下会更好 但是:
- 表获取一个messageid和一个(空白)子id
- (messageid和(空白)子ID)
- 表获取一个messageid和一个子id,该子id与它要对其进行注释的“父”帖子/线程相匹配
- 我知道父贴子(因为子ID列为空)
- 我知道子帖子(因为子ID列的值与父帖子的注释相匹配)
- 所有帖子都有时间戳
- 选择-父帖子-无子ID
- 立即将所有-儿童/评论帖子-置于此项下
'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
谢谢他的回答
这:
(我认为这是您打算提供的内容,而不是您发布的内容??)
**什么都不做这个查询不会给你确切的信息,但是会给你每个帖子至少一行信息。如果没有注释,您将得到一行注释的一堆pfnull信息。如果有评论,则每个评论将获得一行,并重复父帖子信息:
SELECT *
FROM testtable AS post
LEFT JOIN testtable as `comment` ON `comment`.subid = post.messageid
WHERE post.subid = ''
ORDER BY post.postdate ASC;
以下是执行任务的sql:
select*from table order by(0时为CASE table.subid,然后为table.id*1000 ELSE table.subid*1000+table.id END),table.id代码>但是在对以前的父帖子发表评论之前(以及之后),可以发表另一篇“父”帖子。我根据您的示例表更正了查询。这并不完全是你想要的,但我不认为你能得到像那样交错的东西。这至少会给你一个合理的格式的信息。什么是bustrip?这不可编译。为什么会出现单独的“双引号”语法错误?不-我已经修复了它并将其发布在上面原始帖子的底部…还有testedon SQLFiddle…-不起作用Hi@whispers我理解为什么它不适用于您的情况,消息\u id和subid必须是一个整数以保证计算
SELECT *
FROM testtable AS post
LEFT JOIN testtable as `comment` ON `comment`.subid = post.messageid
WHERE post.subid = ''
ORDER BY post.postdate ASC;