如何自我检查oracle中的数据并插入数据

时间:2016-07-23 11:10:00

标签: sql 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,site,vendor no。
  2. 在第二个查询中,我有站点表,我有大约50个站点。
  3. 如第一个查询中所述,042是我的主数据,其中包含不同供应商的不同部分。
  4. 我想从查询1中获取vendor和part_no,并检查部件和供应商是否可用于查询2中的每个站点。如果它可用,我不需要执行任何操作但是如果它不可用我有为purchase_part_supplier_tab
  5. 中没有的网站插入part_no和供应商

1 个答案:

答案 0 :(得分:1)

这是我对你的要求的解释

  • 对于由CONTRACT = 42 ...
  • 定义的VENDOR和PART的每个组合
  • 在SITE_TAB中为每个合同创建一条新记录......
  • 其中没有现有的VENDOR,PART和CONTRACT组合记录。

尝试:

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
    )