有一货品总览表 A
- SQL code
货品名称 还剩数量洗衣粉 10面包 5
……
还有一个 每个物品一条记录的表 B
- SQL code
物品编号 还在 货品名称001 1 洗衣粉002 1 面包003 0 洗衣粉
"还在"这个列,值=1的话,说明该物品还,值为0表示物品已经不存在。
A表"货品名称"就是主键,想查所有物品还剩多少,是
select * from A
B表物品编号是主键,想查每样物品还有多少是
select count(物品编号) from B where 还在=1 group by 货品名称
现在,想让两种查询物品数量的结果显示在一起,因为可能由误操作导致两种记录结果不一样,想看一下。
select A.货品名称, B.货品名称,A.还剩数量 from A left join B on a.货品名称=b.货品名称
结果是
- SQL code
货品名称 货品名称 还剩数量洗衣粉 洗衣粉 10面包 面包 5蚊香 NULL 0
。。。
蚊香这个货品在B表里没有记录,所以查出来货品名称是NULL。还想加一列count(物品编号,但group by和"还在"=1
不知道怎么写,加在哪
------解决方案--------------------
你不是都写出来了吗
select A.货品名称, B.货品名称,A.还剩数量 from A left join B on a.货品名称=b.货品名称
作为一个表,和表A链接
------解决方案--------------------
- SQL code
select A.货品名称, B.货品名称,A.还剩数量,t.还在数量 from A left join ( select count(物品编号) 还在数量,货品名称 from B where 还在=1 group by 货品名称) ton A.货品名称=t.货品名称
------解决方案--------------------
- SQL code
with T as( select count(物品编号) 还在数量,货品名称 from B where 还在=1 group by 货品名称)select A.货品名称, B.货品名称,A.还剩数量,t.还在数量 from A left join T on A.货品名称=t.货品名称