Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL计数不';t使用剩余数据返回空计数。_Mysql_Count_Null - Fatal编程技术网

MySQL计数不';t使用剩余数据返回空计数。

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

问题:对于数据库中存在但未在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 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