首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从另一个数据库中查找缺少的项

从另一个数据库中查找缺少的项
EN

Stack Overflow用户
提问于 2016-09-06 05:40:27
回答 2查看 52关注 0票数 1

我有两个数据库,两个不同的系统。电子数据交换系统ERP系统如下

我想知道所有不在ErpOrderItem表中的EDI系统订单表中的订单。

代码语言:javascript
运行
复制
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

例如,我想知道OrderItems中所有在ErpOrderItem中可用的项目,它们都是通过order key和ErpDocNum链接的订单。这两个系统是通过ErpDocNum在Order_Erp表中链接的。

我试过如下,但这并没有给出我想要的结果。

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2016-09-06 05:52:17

根据所提供的表模式,中提到的列是错误的(ON ERDR.ErpOrderNumber = ErpOrder.DocNum) )

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2016-09-06 16:03:15

如果我正确理解你的问题,你想要的是一份列在你的电子数据交换系统中的所有产品的清单,而不是在你的ERP系统中?如果这是你想要的,那么这就是你获得这些结果所需要的全部。如果我没有正确理解您的需求,那么提供一个表和预期结果以供澄清通常是有帮助的。

代码语言:javascript
运行
复制
SELECT DISTINCT ProductID
FROM edi.OrderItems AS OI
WHERE NOT EXISTS
(
    SELECT 1
    FROM ErpOrderItem AS EOI
    WHERE OI.ProductID = EOI.ProductID
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39341360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档