首页 > 解决方案 > 如何显示2个仓库的产品总数?

问题描述

我有这个数据库:

数据库图

我有一个问题,如何显示 2 个仓库中的产品总数,如果仓库 1 中的产品在仓库 2 中没有,反之亦然

我试过这样

select warehouse1.good_count+warehouse2.good_count 
from warehouse1, warehouse2 
join goods on (warehouse1.good_id = goods.id)
and (warehouse2.good_id=goods.id);

但它不起作用

标签: databaseoracle

解决方案


要么你误解了你的老师想要什么,要么你的老师以错误的方式问了这个问题。

应该只有一个WAREHOUSE带有附加列的表(例如WAREHOUSE_TYPE_ID,其值将是“远程”或“附近”或下一个),可能会对WAREHOUSE_TYPE table进行外键约束。

然后你会简单地

select t.warehouse_type_name,
       sum(w.good_count) summary
from warehouse w join warehouse_type t on t.warehouse_type_id = w.warehouse_type_id
group by t.warehouse_type_name;

我读了你写的评论。这些是物理上不同的仓库(一个在城市,一个在郊区)这一事实并没有改变数据模型错误的事实。它们代表的数据应该包含在同一个表中,一个(正如我之前解释的)。

因为,当公司在另一个城市建立另一个仓库时,你会怎么做?添加另一个表?错误的!

无论如何,如果你坚持,这样的东西可能是你在这个错误的数据模型中寻找的东西:

select g.name,
  sum(a.good_count + b.good_count) total_count
from goods g left join warehouse1 a on a.good_id = g.id
             left join warehouse2 b on b.good_id = g.id
group by g.name

推荐阅读