Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新手需要查询帮助(MYSQL)_Mysql_Sql - Fatal编程技术网

新手需要查询帮助(MYSQL)

新手需要查询帮助(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

我是新来的,几乎是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    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)你能从上面的评论中回答我的问题吗,这样我们可以澄清数据结构的语义。好的,另一个代码,看起来比我的代码好,甚至更好,但没有解决问题。