Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
Sql 无法显示区域容量的零_Sql_Sqlite - Fatal编程技术网

Sql 无法显示区域容量的零

Sql 无法显示区域容量的零,sql,sqlite,Sql,Sqlite,我目前正试图解决这个问题: 确定每个地区某个国家供应商仓库的总容量。供应商的国家是美国。如果区域中没有仓库,则为该区域打印值0。按地区字母顺序打印地区和容量 这是预期的结果: region capacity AFRICA 4314 AMERICA 10446 ASIA

我目前正试图解决这个问题:

确定每个地区某个国家供应商仓库的总容量。供应商的国家是美国。如果区域中没有仓库,则为该区域打印值0。按地区字母顺序打印地区和容量

这是预期的结果:

region                           capacity
AFRICA                               4314
AMERICA                             10446
ASIA                                    0
EUROPE                               8402
MIDDLE EAST                         10866 
到目前为止,我已经为我的SQL语句完成了这项工作,并且大部分都是正确的,但是无论我做了什么尝试,我都无法让亚洲打印0

select r_name, sum(w_capacity)
                  from warehouse,region,nation n1,nation n2,supplier
                        where w_suppkey = s_suppkey
                        AND w_nationkey = n2.n_nationkey
                        AND n1.n_nationkey = s_nationkey
                        AND n2.n_regionkey = r_regionkey
                        AND n1.n_name = "United States
                    group by r_name;

这是我的结果:

warehouse        capacity
AFRICA             4314
AMERICA            10446
EUROPE             8402
MIDDLE EAST       10866
所用表格的别名:

Warehouse table:                     
w_warehousekey decimal(9,0) not null,
w_name char(100) not null,
w_capacity decimal(6,0) not null,
w_suppkey decimal(9,0) not null,
w_nationkey decimal(2,0) not null
我使用了TPC-H数据库。此链接显示我提供的表的所有别名:

使用左连接确保始终包含区域。没有对应行的区域的总数将为空。要克服这个问题,请使用IFNULL函数

例如:

Region
RegionID RegionName
1          Europe
2.         Americas

Sales
Date     RegionID Amount
1/1/2020 1          10
2/1/2020 1          20

SELECT r.RegionName, IFNULL(SUM(s.Amount), 0) AS Amount
FROM region r LEFT JOIN sales s ON r.RegionID= s.RegionID
GROUP BY RegionName

Expected result:
RegionName Amount
Europe     30
Americas   0

请在所有表格中添加别名,以便我在提出编码解决方案时不必猜测。我已编辑了我的帖子。很抱歉,@TarikI提供了一个简化的示例,可以帮助您完成。我建议您使用更加明确的
join on
语法,并且不要将where子句中不属于它的join列降级。如果您仍然卡住,请告诉我。最好使用
内部联接,左联接,
而不是
无论如何,您需要使用“左联接”或
和(+)
而不是
联接
来处理联接过程中没有记录的表,并且还需要使用
isnull(总和(容量),0)
我仍然对如何在代码中添加左连接感到困惑。你能再澄清一点吗?非常感谢。