新手需要查询帮助(MYSQL)
我是新来的,几乎是SQL新手 我的问题是: 我有一张桌子(T1),上面有新手需要查询帮助(MYSQL),mysql,sql,Mysql,Sql,我是新来的,几乎是SQL新手 我的问题是: 我有一张桌子(T1),上面有 Datetime、成本编号、金额 第二个表(T2)带有 Date、CostNo、BillNo 在查询中应该是 日期、成本号、账单号、金额 我的问题是,同一天,同一笔费用有好几笔钱 我需要根据日期时间对账单进行排序 T1 f.e.: 2018-11-02 11:14:52 3637 24.10 2018-11-02 11:16:43 965 2.50 2018-11-02 11:40:28 2552
Datetime、成本编号、金额
第二个表(T2)带有
Date、CostNo、BillNo
在查询中应该是
日期、成本号、账单号、金额
我的问题是,同一天,同一笔费用有好几笔钱
我需要根据日期时间对账单进行排序
T1 f.e.:
2018-11-02 11:14:52 3637 24.10
2018-11-02 11:16:43 965 2.50
2018-11-02 11:40:28 2552 3.50
2018-11-02 11:40:51 2552 3.00
2018-11-02 11:41:10 2552 3.50
2018-11-02 11:41:36 2552 3.00
2018-11-02 11:55:03 980 3.00
2018-11-02 11:59:11 1976 3.00
T2 f.e.:
2018-11-02 3637 26189
2018-11-02 965 26190
2018-11-02 2552 26191
2018-11-02 2552 26192
2018-11-02 2552 26193
2018-11-02 2552 26194
2018-11-02 980 26195
2018-11-02 1976 26196
所以我的问题是:
select
T2.BillDate,
T2.CostNo,
T2.BillNo,
T1.Amount
from
`T2`,
`T1`
where
T1.CostNo =T2.CostNo
AND DATE(T1.BillDateTime) = T2.BillDate
在CostNo 2552之前工作正常:
2018-11-02 3637 26189 24.10
2018-11-02 965 26190 2.50
2018-11-02 2552 26191 3.50
2018-11-02 2552 26191 3.00
2018-11-02 2552 26191 3.50
2018-11-02 2552 26191 3.00
2018-11-02 2552 26192 3.50
2018-11-02 2552 26192 3.00
2018-11-02 2552 26192 3.50
2018-11-02 2552 26192 3.00
2018-11-02 2552 26193 3.50
2018-11-02 2552 26193 3.00
2018-11-02 2552 26193 3.50
2018-11-02 2552 26193 3.00
2018-11-02 2552 26194 3.50
2018-11-02 2552 26194 3.00
2018-11-02 2552 26194 3.50
2018-11-02 2552 26194 3.00
2018-11-02 980 26195 3.00
2018-11-02 1976 26196 3.00
结果应该是:
2018-11-02 3637 26189 24.10
2018-11-02 965 26190 2.50
2018-11-02 2552 26191 3.50
2018-11-02 2552 26192 3.00
2018-11-02 2552 26193 3.50
2018-11-02 2552 26194 3.00
2018-11-02 980 26195 3.00
2018-11-02 1976 26196 3.00
我猜你想要:
select T2.BillDate, T2.CostNo, T2.BillNo, T1.Amount
from `T2` join
`T1`
on T1.CostNo = T2.CostNo and DATE(T1.BillDateTime) = T2.BillDate
order by T!.CostNo, T1.BillDateTime DESC;
首先注意正确使用JOIN
。切勿在FROM
子句中使用逗号。始终使用正确、明确、标准的连接语法
其次,如果您希望结果按特定顺序排列,那么您的查询应该有一个
orderby
子句。SQL表和结果集(没有排序依据)表示无序集。因此,您需要一个订购人。我猜您希望将所有的成本编号
放在一起,然后按日期/时间在每个成本编号内订购。好的,谢谢您的帮助。我自己找到了解决办法。
这是,如果有人知道的话:
2号公路上的比尔诺。表链接到表1的日期时间
因此,我从表1构建了一个临时表,在DateTime上使用SUM/groupby和orderby,并添加了一个行ID(auto_increment)。
接下来,我从表2中构建一个临时表,按BillNo排序,并添加一个行ID。
现在我可以用T1.ID=T2.ID进行查询,就这样
请随意发布更好和/或更短的解决方案 欢迎来到堆栈溢出!请提供相关且最低限度的样本数据,说明您的要求和预期输出。请浏览一下这个链接:为什么“金额”和“账单号”在不同的表格中,却与相同的成本号相关?金额肯定与特定账单有关吗?不清楚问题是在您的数据结构中,还是仅在您的查询中。请提供每个表中的一些示例数据,并显示查询的预期结果。谢谢。请查看并发布您尝试的查询。本教程中有一个示例(orders>>orderdetails),看起来与您想要的类似。感谢更新。但是1)您希望它输出什么?2)你能从上面的评论中回答我的问题吗,这样我们可以澄清数据结构的语义。好的,另一个代码,看起来比我的代码好,甚至更好,但没有解决问题。