如何按日期从订单和订单行表中选择记录计数?

时间:2015-08-12 15:32:30

标签: mysql select group-by nested left-join

我的系统有OrderOrderLine个表格。 我们可以考虑如下: (请不要考虑语法部分。)

订单:

OrderId int(11) not null auto increment
customerId int(11)
orderdate datetime
...

订单行:

OrderId int(11)
productId int(11)
orderdate datetime
rate, total, ...

我需要一个提示/指针来在MySQL中编写一个查询,它可以给我orderdate分组的订单和项目(订单行的一部分)的总数。换句话说,我需要一个查询,它可以显示来自两个不同的表(基本上是一些计数)的信息,这些表不是1:1(例如:在这种情况下,一个订单可以包含许多项)。我需要的只是计数。表之间的关系是OrderId。但是,这与我无关,因为我需要查看OrderDate并将它们分组到两个表中。

例如:

Date         Orders        Items
2015-08-10    4747        58729
2015-08-11    4822        47593
2015-08-12    5219        52842

到目前为止我所做的是这样的:

Select count(*) from order group by date(orderdate)
Select count(*) from orderline group by date(orderdate)

我也试过使用LEFT加入加入。但是,我无法得到理想的结果。

在单个选择中组合多个表的数据(主要是计数)的任何帮助都会对我有帮助。

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您需要使用subselect来计算订单行 - 如下所示:

select date(orderdate),count(*),
  (select count(*) from OrderLine 
   where date(OrderLine.orderdate)=date(Order.orderdate)) 
from Order 
group by date(orderdate);