【发布时间】:2017-11-18 08:02:19
【问题描述】:
我使用的是 Mysql 5.5 版。我有两个表 - 产品,订单。
CREATE TABLE `product` (
`id` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `ordr` (
`id` int(11) NOT NULL,
`product_id` varchar(45) DEFAULT NULL,
`status` varchar(45) DEFAULT NULL,
`qty` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是它们的填充方式 -
insert into product values (20, 'pen');
insert into ordr values (100, 20, 'queue', 5);
insert into ordr values (110, 20, 'queue', 5);
insert into ordr values (120, 20, 'pending', 10);
insert into ordr values (130, 20, 'pending', 10);
insert into ordr values (140, 20, 'pending', 10);
我想获取处于两种不同状态的产品的总数。对于上面数据的测试数据,我希望看到队列数量为 10,待处理数量为 30。
当我跑步时
select p.name, sum(o.qty) as queue_qty, sum(o2.qty) as pending_qty
from product p
left outer join ordr o on o.product_id = p.id and o.status = 'queue'
left outer join ordr o2 on o2.product_id = p.id and o2.status = 'pending'
where p.id = 20;
我明白了
name - pen
queue_qty - 30
pending_qty - 60
有人可以帮我修复这个 SQL 吗?
【问题讨论】: