0

我有三个通过 DBLink 远程连接的数据库,我想在三个数据库中创建一条记录。这个问题的动态是有一家公司拥有 3 家零售店,他们可以在其中销售在其他商店中找到的物品。item1 仅在retailstore1 中找到,item2 仅在retailstore2 中找到,依此类推。但是,一家商店可以出售当前在其中找不到的商品,因此它需要向其他商店提出请求,以检查是否有足够的库存。每次一家商店销售时,它都会在 LOG 中创建一个记录,但前提是它成功了。

这些是示例中使用的表。

  • 零售店 #1:Items(a int)、LOG(a int, b int, c int)
  • 零售店#2:Items(b int),LOG(a int, b int, c int)
  • 零售店#3:Items(c int),LOG(a int, b int, c int)

现在,我想在三个商店的 LOG 中记录之前检查库存中是否有足够的商品,但这必须在单个查询或存储过程中完成,或者通过必要的步骤来实现。限制是数据库需要打开一次,执行,关闭,不再需要。

4

1 回答 1

0

听起来您想要的是一个查询,显示哪个商店有该商品,所以当店员进行查找时,它会显示商品、商店和剩余数量。一种方法可能是使用联合,例如,如果您传入项目编号的过程(不知道它存在的位置),您将像这样查询: (p_item IN NUMBER) - 这是与所需项目编号一起传入的参数

select item1, store1, qty1, 0 item2, 0 store2, 0 qty2, 0 item3, 0 store3, 0 qty3
from store1
where item1 = p_item
union all
select 0, 0, 0, item2, store2, qty2, 0, 0, 0 
from store2
where item2 = p_item
union all
select 0, 0, 0, 0, 0, 0, item3, store3, qty3 
from store3
where item3 = p_item

这应该只返回 1 行,其中的值不是 0,并且会告诉你它在哪里。

然后,更新可以使用 if 语句或 case 语句来根据在哪个项目/商店组合中找到它来更新适当的商店。

于 2014-10-17T02:20:21.680 回答