2013-07-18 34 views
0

最终结果是我想从查询中创建一个文件,然后我可以使用该文件执行另一个dB的导入操作。我有产品编号(ITEM_NO),可以有两个关联的条码(BARCOD)。我想,以确保由TABLE_2提供的条形码是不是已经在TABLE_1(因为有时有)在选择之前检查现有数据

TABLE_1(现有的条形码)

ITEM_NO | BARCOD 
----------------- 
    001 | A 
    001 | B 
    002 | C 
    003 | E 
    003 | F 
    004 | G 
    005 | I 

TABLE_2(新条形码)

ITEM_NO | BARCOD 
----------------- 
001 | B 
002 | D 
003 | F 
004 | H 
005 | J 

所以我想要的输出文件将是

ITEM_NO | BARCOD 
----------------- 
002 | D 
004 | H 
005 | J 

有关起点,我有:

SELECT TABLE_1.ITEM_NO, TABLE_2.ITEM_NO, TABLE_1.BARCOD, TABLE_2.BARCOD 
FROM TABLE_2 INNER JOIN TABLE_1 ON TABLE_2.ITEM_NO=TABLE_1.ITEM_NO 
WHERE TABLE_1.BARCOD<>TABLE_2.BARCOD 
ORDER BY TABLE_1.ITEM_NO 

但是,这并不工作,因为它比较行1表1对行1和表2,看到的是BARCODs是不同的,其包含在查询..假阳性我想我正在寻找的是一种从子查询创建字符串的方式,如STRING_TEMP [1] = [A,B](请原谅我如何显示此内容,不知道适当的约定是什么),所以字符串基于TABLE_1.ITEM_NO的值,然后检查以查看该字符串是否包含TABLE_2.BARCOD的值其中TABLE_2.ITEM = TABLE_1.ITEM

希望这是足够的信息来描绘我清晰的图片试图做...感谢adnavce提供的任何帮助,

Jordie FIKE
www.kittyhawk.com

回答

0

它看起来像你想

SELECT ITEM_NO, BARCOD 
FROM TABLE_2 
WHERE BARCOD NOT IN 
    (SELECT BARCOD FROM TABLE_1) 
+0

这是把我在正确的道路上的一个,我离开了,只有沿着其中TABLE_1.ITEM_NO = TABLE_2.ITEM_NO(所以在我的例子中添加进来BARCODS行6 | L和7 | N,并且由于T1中不存在6或7,所以我们丢弃那些行) 这是我做了什么 SELECT DISTINCT TABLE_2.ITEM_NO,TABLE_2.BARCOD,TABLE_1.ITEM_NO FROM TABLE_2 INNER JOIN TABLE_1 ON TABLE_2.ITEM_NO = TABLE_1.ITEM_NO WHERE TABLE_2.BARCOD NOT IN (SELECT TABLE_1.BARCOD FROM TABLE_1) ORDER BY TABLE_2.ITEM_NO; 抱歉,无法格式化评论 – user2596059

0

从我个人理解,你想:

SELECT * 
FROM TABLE_1 
WHERE ITEM_NO IS NOT IN (SELECT DISTINCT ITEM_NO FROM TABLE_2) 
ORDER BY ITEM_NO; 

这会从TABLE_1中选择所有尚未在TABLE_2中的数据。

如果你想从TABLE_2的所有数据,是不是已经在TABLE_1,只需切换声明围:

SELECT * 
FROM TABLE_2 
WHERE ITEM_NO IS NOT IN (SELECT DISTINCT ITEM_NO FROM TABLE_1) 
ORDER BY ITEM_NO; 

我希望帮助,是你所追求的。

相关问题