求 计数 与 实际数量 不一样
有一货品总览表 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 货品名称
) t
on 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.货品名称