我有三张桌子,我想要做的是计算我从每个订单中获得的用量。
用户:
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查询中使用?
答案 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
。