Mysql 如何使用三个表在sql中计数
我有三张桌子,我想做的是数一数每一份订单的使用量 用户: IDs UserID 1 25 2 32 用户标识 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 ID开始日期停止日期计数用户ID 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 日期ID 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) 医嘱ID计数器ID(或用户ID) 1 3 1(或25) 21(或25) 3 1 2(或32) 4 1 2(或32)Mysql 如何使用三个表在sql中计数,mysql,sql,Mysql,Sql,我有三张桌子,我想做的是数一数每一份订单的使用量 用户: IDs UserID 1 25 2 32 用户标识 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 1
不幸的是,我无法编辑表-在SQL查询中可能吗?这将为您提供所需的结果:
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 |
小提琴
如果需要,您可以在
u.IDS
的select和group by子句中更改u.userID
。除了IDS(或userID)
之外,您的预期输出是清晰的。请给我一个adivce,好吗?是的:澄清该列:)计数器是清晰的,正如我前面所说的。问题是我不明白为什么专栏会说或。您要找的是ID
还是UserID
?后者将更容易,因为它将保存与用户表的联接,因为您可以从Orders
表获取userID
。另外,这些是日期还是字符串?巨大的差异!(MySQL将日期显示为YYYY-MM-DD
)@Mat,您真的希望将连接结果同时显示为id(或UserID)或两者之一吗?不幸的是,它来自Users表。非常感谢!我现在要测试它,所以我会在几分钟内给出反馈。