2016-09-06 7 views
1

2つの異なるシステム用に2つのデータベースがあります。 EDIシステムERPシステム私はEDIシステム受注テーブル内のすべての注文にErpOrderItem表にするためにT-SQLの検索他のデータベースから見つからない項目

A. EDI System 

Order 
---- 
1. OrderId 
2. OrderDate 

OrderItems 
--------- 
1. OrderItemId 

2. OrderId 

3. ProductId 

Order_Erp 
------ 
1. OrderId 
2. ErpDocNum 


ERP System 


ErpOrder 
------- 
1. ErpDocNum 
2. DocEntry 

ErpOrderItem 
---- 
1. DocEntry 
2. ProductId 

ではありませんすべてのProductIdを知っていただきたいと思い

次のようにたとえば、注文キーとErpDocNumでリンクされた注文のErpOrderItemで使用できないOrderItemsのすべてのアイテムを知りたいとします。これらの2つのシステムは、Order_ErpテーブルのErpDocNumによってリンクされています

私は以下のように試しましたが、私は後の結果を与えていません。提供テーブルスキーマを1として

select * from edi.Orders ODR 
INNER JOIN edi.Order_Erp ERDR ON ODR.OrderId = ERDR.OrderId 
INNER JOIN edi.OrdersItems ODRL ON ODR.OrderId = ODRL.OrderId 
INNER JOIN ErpOrder ON ERDR.ErpDocNum = ErpOrder.ErpDocNum 
INNER JOIN ErpOrderItem ON ErpOrder.DocEntry = ErpOrderItem.DocEntry 
where ErpOrder.ProductId != ODRL.Productid collate SQL_Latin1_General_CP1_CI_AS 
+0

不足しているアイテムを見つけるには、「外部結合」または「例外」が必要です。 – adrianm

答えて

0

、条件に、あなたに言及した列は間違っている

SELECT * 
FROM edi.Orders ODR 
    INNER JOIN edi.Order_Erp ERDR ON ODR.OrderId = ERDR.OrderId 
    INNER JOIN edi.OrdersItems ODRL ON ODR.OrderId = ODRL.OrderId 
    INNER JOIN ErpOrder ON ERDR.ErpDocNum = ErpOrder.ErpDocNum 
    INNER JOIN ErpOrderItem ON ErpOrder.DocEntry = ErpOrderItem.DocEntry 
WHERE ErpOrder.ProductId != ODRL.Productid collate SQL_Latin1_General_CP1_CI_AS 
+0

それはタイプミスで、私はそれを修正しました..まだ私は後の結果を与えません –

0

ERDR.ErpOrderNumber = ErpOrder.DocNum ON)私が正しくあなたの質問を理解していればあなたの後ろには、EDIシステムにあるがERPシステムにはないすべての製品のリストがあります。それがあなたが望むだけなら、これはあなたがそれらの結果を得るために必要なものでなければなりません。あなたの必要条件を正しく理解していない場合は、テーブルの例と期待される結果を明確にするのに役立ちます。

SELECT DISTINCT ProductID 
FROM edi.OrderItems AS OI 
WHERE NOT EXISTS 
(
    SELECT 1 
    FROM ErpOrderItem AS EOI 
    WHERE OI.ProductID = EOI.ProductID 
) 
関連する問題