Oracle连接组合

时间:2015-08-05 20:37:14

标签: sql oracle join

我有以下表格及其相应的列:

Order_head (order_no, supplier)
Order_item (order_no, item, country)
Supplier_Country (supplier, item, country)

Order_head:
order_no   supplier
  100        2000

Order_item
order_no   item   country
  100      001   
  100      002

Supplier_Country
supplier   item   country
  2000     001      SA
  2000     002      US

The Country Column in order_item should be filled as per the info in Supplier_Country Table 

Order_item
order_no   item   country
  100      001      SA   
  100      002      US

Order_head和Order_item由order_no加入。

我想填写Order_item中的国家/地区列 - 基于order_head的SUPPLIER和order_item中的ITEM与Supplier_Country表中的供应商和料品相匹配的条件。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

假设Country位于供应商国家/地区表中,您可以使用以下内容:

UPDATE OI
SET Country=SC.Country
FROM Order_item OI
INNER JOIN ORDER_HEAD OH
on OI.Order_No=OH.Order_No
INNER JOIN Supplier_Country SC
on OH.Supplier=SC.Supplier 
and OI.Item=SC.Item

答案 1 :(得分:0)

我发现item表中的Supplier_Country列有点奇怪。但根据您的信息,我认为这是update声明:

update Order_item oi
set oi.country = (select sc.country
                    from Order_head oh
                    join Supplier_Country sc
                      on sc.supplier = oh.supplier
                     and sc.item = oi.item
                   where oh.order_no = oi.order_no)