1

テーブル OtherItems 内のどのアイテムが ItemMain にも存在し、どれが存在しないかを判断する必要があります。

問題は、一部の UPC には先頭が 0 で、一部の UPC がないことです。

だから私はこのクエリを試しましたが、結果は良くありません。

SELECT * from OtherItems
WHERE UPC like '0%' and upc not in(select '0' + UPC from itemmain)
Or UPC not in(select UPC from itemmain))

ここで私が間違っていることを教えてもらえますか?

4

3 に答える 3

3
select * 
from OtherItems 
where not exists ( select * 
                   from itemmain 
                   where UPC=OtherItems.UPC or '0'+UPC=OtherItems.UPC )

多分:

select * 
from OtherItems 
where ( UPC like '0%' 
        and not exists (select * from itemmain where '0'+UPC=OtherItems.UPC) )
   or ( UPC not like '0%' 
        and not exists (select * from itemmain where UPC=OtherItems.UPC) )
于 2012-11-28T18:54:59.320 に答える
3

通常、UPC にはアルファベットが含まれていません。一方に存在し、他方には存在しない場合、先頭のゼロを削除する数値にそれらをキャストしないのはなぜですか?

SELECT *
FROM OtherItems A
WHERE NOT EXISTS
     (SELECT 1
      FROM ItemMain B
      WHERE CAST(A.UPC as DECIMAL(18)) = CAST(B.UPC) AS DECIMAL(18)) 
于 2012-11-28T18:56:16.547 に答える
0

ロジックでは、OR を括弧で囲む必要があります。

SELECT * from OtherItems
WHERE UPC like '0%' and 
    (upc not in(select '0' + UPC from itemmain)
    Or UPC not in(select UPC from itemmain))

括弧を使用すると、AND が優先されるため、効果的に取得できます(A AND B) OR C

于 2012-11-28T18:55:36.630 に答える