2014-10-16 15 views
0

我有三個通過DBLink遠程連接的數據庫,我想在其中三個數據庫中創建一個記錄。在這個問題上的動態是,有一家公司有3個零售商店,他們可以在其中銷售其他商品。 item1僅在retailstore1中找到,item2僅在retailstore2中找到等等。但是,一家商店可以出售當前沒有找到的商品,因此需要向其他商店申請,以檢查庫存是否足夠。每當一家商店出售時,它會在LOG中創建一個記錄,但前提是成功。單個查詢中的多個操作ORACLE

這些是在這個例子中使用的表格。

  • 零售商店#1:項目(a INT),LOG(一個INT,B INT,C INT)
  • 零售商店#2:項目(B INT),LOG(一個INT,B INT, c將整型)
  • 零售商店#3:項目(C INT),LOG(A INT,b INT,C INT)

現在,我要檢查是否有庫存足夠的項目做唱片的前在三家商店的LOG中,但這必須在單個查詢或存儲過程中完成,或者必須採取必要措施才能實現。限制是數據庫需要打開一次,執行,關閉,不再需要。

+0

注。如果你知道如何制定方法,請幫助我。它不一定是使用所需語法的完整答案。只是想法。謝謝。 – ditmark12 2014-10-16 17:39:22

+1

我無法理解您的具體問題以及您的架構。如果你想要回應,你會想要充實這個問題。一些建議:您使用的是哪個版本的Oracle?您如何檢查項目是否有貨(您所描述的項目表中沒有足夠的信息)。 LOG表的用途是什麼 - 爲什麼有三列?你需要展示一個數據流的例子。如果沒有這些,請閱讀兩階段提交(http://docs.oracle.com/cd/B19306_01/server.102/b14231/ds_txnman.htm) – 2014-10-16 18:36:18

回答

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行與其中的值不是0s,並會告訴你它在哪裏。

更新然後可以使用if語句或case語句根據更新相應的商店,其項目/存儲組合,它被發現。