2016-07-23 45 views
0

大家好,這裏是我下面的情況如何自我檢查數據在Oracle和插入數據

查詢1:

select part_no, contract, vendor_no 
from PURCHASE_PART_SUPPLIER_TAB 
where part_no in (select distinct(part_no) 
        from IC_PARTS_FILE_TAB 
       ) and 
     contract = '42'; 

輸出1:

enter image description here

合同(網站)表

查詢2:

從site_tab選擇合約作爲網站;

輸出2:

enter image description here

  1. 通過使用第一查詢,我得到20個結果與PARTNO,網站,供應商沒有。
  2. 在第二個查詢中我有站點表,我有大約50個站點。
  3. 正如在第一個查詢中提到的,042是我的主數據,它有不同供應商的不同部分。
  4. 我想從查詢1中獲取供應商和part_no,並檢查零件和供應商是否適用於查詢2中的每個網站。如果可用,我不需要執行任何操作,但如果它不可用,我有插入PART_NO和供應商爲這是不是在purchase_part_supplier_tab提供的網站
+1

請編輯的問題,並提供樣本數據和預期的結果。你真正想做的事情還不清楚。 –

+1

例如(跟隨戈登的評論):什麼是「網站」?在查詢或輸出中沒有提及「站點」。什麼是「剩餘」網站?閱讀你的問題,但假裝,如果可以的話,你不知道問題是什麼。你明白這個問題嗎?如果你不這樣做,我們怎麼辦? – mathguy

+0

您好Gordon Linoff&mathguy您能幫我解決我是否必須去pl/sql編碼 –

回答

1

這是由合同規定供應商和零件的每一個組合我的客戶要求

  • 解釋= 42 ...
  • 爲SITE_T中的每個合同創建一個新記錄AB ...
  • 如果沒有供應商,零件和合同組合的現有記錄。

嘗試:

INSERT INTO PURCHASE_PART_SUPPLIER_TAB 
(vendor_no, part_no, contract) 
SELECT vendor_no, part_no, st.contract 
FROM 
    PURCHASE_PART_SUPPLIER_TAB ppst 
    CROSS JOIN 
    SITE_TAB st 
WHERE ppst.contract = '42' 
    AND part_no IN (SELECT part_no FROM IC_PARTS_FILE_TAB) 
    AND st.contract<>ppst.contract -- don't bother joining to master 
    AND NOT EXISTS 
    (SELECT * 
     FROM PURCHASE_PART_SUPPLIER_TAB 
     WHERE vendor_no = ppst.vendor_no 
     AND part_no = ppst.part_no 
     AND contract = st.contract 
    ) 
+1

您的解決方案比我的更加整潔,所以我刪除了我的文章。我加了我的口譯,因爲我不確定OP的要求是否清楚。希望你不介意。 – APC

+0

@APC你的編輯改進了答案,因爲最重要的是確定要求。一旦用這種方式表達,SQL就是後果。 – Unoembre

相關問題