MySQL计数不';t使用剩余数据返回空计数。
问题:对于数据库中存在但未在tbl_库存中分配任何项目的位置_id,我无法使数据库返回0/NULL。。除了已分配项目的位置id的计数之外 tbl\U库存:(仅过账相关列) tbl\u位置:(发布所有列) 查询MySQL计数不';t使用剩余数据返回空计数。,mysql,count,null,Mysql,Count,Null,问题:对于数据库中存在但未在tbl_库存中分配任何项目的位置_id,我无法使数据库返回0/NULL。。除了已分配项目的位置id的计数之外 tbl\U库存:(仅过账相关列) tbl\u位置:(发布所有列) 查询 SELECT tbl_location.location_desc, tbl_inventory.location_id, COALESCE(COUNT(tbl_location.location_id), 0) as 'idCnt' FROM tbl_location LEFT O
SELECT
tbl_location.location_desc,
tbl_inventory.location_id,
COALESCE(COUNT(tbl_location.location_id), 0) as 'idCnt'
FROM tbl_location
LEFT OUTER JOIN tbl_inventory
ON tbl_location.location_id = tbl_inventory.location_id
WHERE tbl_inventory.shop_id = 110
GROUP BY tbl_location.location_id;
结果
location_id, shop_id, ...
1 | 100
1 | 100
3 | 106
4 | 100
10 | 102
2 | 100
location_id, location_desc, shop_id
1 | Shop Stock | 100
2 | Crash Kit | 100
3 | Site 4 | 106
4 | Radar Site | 102
5 | New Location | 100
...
10 | Fire Stn 2 | 100
location_desc, location_id, idCnt
Shop Stock | 1 | 2
Crash Kit | 2 | 1
Fire stn 2 | 10 | 1
缺少什么这里是tbl\U位置的位置id 5
New Location | 5 | 0 (or Null, because there are none in tbl_inventory)
说明:
我的tbl_位置是由我们网络中的各个商店分配(并创建)的集装箱标签表。然后,商店拥有该容器的所有权,并可以为其分配零件(tbl_inventory.location_id),以便进行库存
我的PHP应用程序使用此查询生成可用位置的列表,并根据分配给它的项目数量授予选项。。如果项目数量为0,我希望能够删除该位置
更糟
如果我把整个查询都搞糟了。。
仅返回1个位置\u id/desc,并将该行上的全部总和相加
location_desc, location_id, idCnt
Shop Stock | 1 | 5
我不确定这里到底发生了什么(在更糟糕的块中)-但是我已经手动计数,原始查询返回了正确的计数,我只是无法让它描绘出确实存在于数据库中,但实际上没有任何项目分配给它们的位置
有人有什么见解吗?我找到的所有修复方法都还没有奏效 移动
WHERE tbl_inventory.shop_id = 110
条件到联接条件
ON tbl_location.location_id = tbl_inventory.location_id
AND tbl_inventory.shop_id = 110
在您的FROM
和LEFT JOIN
子句生效后-有一行0
,但中的将其过滤掉,因为该行中没有tbl\u inventory.shop\u id=110
PS:在选择中,它应该是tbl\u位置.位置id
,而不是tbl\u库存.位置id