如何使用三个表在sql中计数

时间:2013-12-12 20:17:51

标签: mysql sql

我有三张桌子,我想要做的是计算我从每个订单中获得的用量。

用户:

IDs    UserID
1     25
2     32

订单:

ID     StartDate     StopDate     Count        UserID
1      01.01.2013    10.01.2013   10           25
2      13.01.2013    16.01.2013   4            25
3      10.01.2013    23.01.2013   13           32
4      25.01.2013    26.01.2013   2            32

用法:

Date           IDs
01.01.2013     1
02.01.2013     1
03.01.2013     1
13.01.2013     1
21.01.2013     1
11.01.2013     2
26.01.2013     2

我想要实现的是这样的:

OrderID      Counter  IDs(or UserID)       
1            3        1(or 25)     
2            1        1(or 25)
3            1        2(or 32)
4            1        2(or 32)     

不可思议,我无法编辑表 - 是否可以在SQL查询中使用?

1 个答案:

答案 0 :(得分:1)

这应该可以为您提供所需的结果:

SELECT o.id, COUNT(usg.ids) counter, u.userID FROM users u
JOIN orders o ON u.userId = o.userId
LEFT JOIN usage1 usg
ON u.ids = usg.Ids AND usg.date BETWEEN o.startDate AND o.stopDate
GROUP BY o.id, u.userID

输出:

| ID | COUNTER | USERID |
|----|---------|--------|
|  1 |       3 |     25 |
|  2 |       1 |     25 |
|  3 |       1 |     32 |
|  4 |       1 |     32 |

小提琴here

如果需要,您可以在u.userID的select和group by子句中更改u.IDS