我的项目是关于一家珠宝店的,我试图找到利润最高的产品。
我有 3 张桌子可以提供信息:
销售表:
salesid productid Quantity Price
11001 13001 4 5
11002 13002 6 10
11003 13003 5 16
.
.
11012 13012 7 15
返回表:
salesid productid Quantity Price
11003 13003 1 16
11007 13007 3 12
11008 13008 3 8
采购表:
procurementid productid Quantity Price
100001 13001 10 2
100002 13002 10 2
.
.
100012 13012 10 2
利润由以下公式给出:
利润 = 数量 * 价格(销售)- 数量 * 价格(退货)- 数量 * 价格(采购)
现在问题来了。到目前为止我想到了这个
select a.productid,(a.quantity*a.price-b.quantity*b.price-c.quantity*c.price) as Profit
from sales as a ,return as b ,procurement as c
where a.productid = c.productid
GROUP BY productid
在这种情况下,我没有得到正确的答案。
这是因为在返回表中我只有 3 个寄存器,但在其他表中我有 12 个,所以当它计算利润时,它为其他表的每一行使用整个返回表。
我尝试使用max(Profit)
,但它没有做任何事情。
我实际上不知道如何连接返回表的 3 个寄存器,以便仅在必须时使用它们。当我尝试连接时,很多行都是空的。我认为必须做某事OUTER JOIN
或某事,但我不知道该怎么做。