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

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

我有三张桌子,我想做的是数一数每一份订单的使用量

用户:

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)
不幸的是,我无法编辑表-在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表。非常感谢!我现在要测试它,所以我会在几分钟内给出反馈。