【发布时间】:2019-07-19 19:53:55
【问题描述】:
CREATE TABLE IF NOT EXISTS `cust` (
`cId` int(11) NOT NULL,
`name` char(25) DEFAULT NULL,
PRIMARY KEY (`cId`)
);
INSERT INTO `cust` (`cId`, `name`) VALUES
(1, 'Danish'),
(2, 'Dilkash'),
(3, 'Dilshad');
CREATE TABLE IF NOT EXISTS `inv` (
`iId` int(11) NOT NULL,
`cId` int(11) DEFAULT NULL,
PRIMARY KEY (`iId`)
);
INSERT INTO `inv` (`iId`, `cId`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2);
CREATE TABLE IF NOT EXISTS `ord` (
`iId` int(11) DEFAULT NULL,
`cId` decimal(10,0) DEFAULT NULL
);
INSERT INTO `ord` (`iId`, `cId`) VALUES
(1, '50'),
(1, '80'),
(2, '40'),
(3, '20'),
(3, '30'),
(4, '90'),
(5, '60'),
(5, '40');
我想获取客户生成的发票数量和所有订单的总和。有 3 个表 cust,inv,ord 分别代表customers,invoicec,orders
:::::::::::::::工作正常:::::::::::::: 我尝试使用此查询获取使用客户姓名生成的发票总数...它工作正常...
mysql> select cust.cId,cust.name,count(inv.iId)
from cust left join inv on cust.cId=inv.cId group by cust.cId;
+-----+---------+----------------+
| cId | name | count(inv.iId) |
+-----+---------+----------------+
| 1 | Danish | 3 |
| 2 | Dilkash | 2 |
| 3 | Dilshad | 0 |
+-----+---------+----------------+
:::::::::::::::工作正常:::::::::::::: 然后我尝试获取按客户分组生成的所有发票的总和......它也可以正常工作
mysql> select cust.cId,cust.name,count(inv.iId)
from cust left join inv on cust.cId=inv.cId group by cust.cId;
+-----+---------+----------------+
| cId | name | count(inv.iId) |
+-----+---------+----------------+
| 1 | Danish | 3 |
| 2 | Dilkash | 2 |
| 3 | Dilshad | 0 |
+-----+---------+----------------+
3 rows in set (0.00 sec)
:::::::::::::问题在这里::::::::::::::::::
但是当我尝试在相同的结果中获取 COUNT 和 SUM 时,它不起作用......它计算的是订单而不是发票......
mysql> select cust.cId,cust.name,count(inv.iId),sum(ord.cId)
from cust left join inv on cust.cId=inv.cId left join ord on inv.iId=ord.iId group by cust.cId;
+-----+---------+----------------+--------------+
| cId | name | count(inv.iId) | sum(ord.cId) |
+-----+---------+----------------+--------------+
| 1 | Danish | 5 | 220 |
| 2 | Dilkash | 3 | 190 |
| 3 | Dilshad | 0 | NULL |
+-----+---------+----------------+--------------+
3 rows in set (0.00 sec)
请更正我的最后一个查询...它显示 5,3,0 是订单数量而不是发票数量...它应该显示 3,2,0...。
【问题讨论】: