SELECT 产品编码,产品名称,产品规格,产品单位,产品单价
FROM 入库记录 
WHERE 产品编码 NOT IN (SELECT 产品编码 FROM 产品库存 WHERE 仓库编码='A' ) 
  AND 产品规格 NOT IN (SELECT 产品规格 FROM 产品库存 WHERE 仓库编码='A' )这个语句有点问题,我一直没想通,我如果屏蔽掉最后一个判断 
SELECT 产品编码,产品名称,产品规格,产品单位,产品单价
FROM 入库记录 
WHERE 产品编码 NOT IN (SELECT 产品编码 FROM 产品库存 WHERE 仓库编码='A' ) 
这样的话,会有几条记录显示出来,说明在产品库存中没有入库记录的一些品种,但我按上面写得话,就一条都不显示了,一直没想通为什么。注:有使用同一个 产品编码 但不同规格的产品。 

解决方案 »

  1.   

    SELECT 产品编码,产品名称,产品规格,产品单位,产品单价
    FROM 入库记录 a
    where not exists(select 1 from 产品库存 
                   where 产品编码=a.产品编码 and 产品规格=a.产品规格 and 仓库编码='A')
      

  2.   


    --你写的sql相当于这个
    SELECT 产品编码,产品名称,产品规格,产品单位,产品单价
    FROM 入库记录  
    WHERE checksum(产品编码,产品规格) NOT IN (SELECT checksum(产品编码,产品规格) FROM 产品库存 
     WHERE 仓库编码='A' )  
    如果你按照产品编码,产品规格同时匹配去找,没有那就是没有了
      

  3.   

    分析:
    查询入库表,
    如果产品编码 不在 A 库产品库存的编码中  会有记录
    如果再加上,且产品规格不在 A库产品库存的规格中 就不会有记录1.如果只是
    查询入库表,
    如果产品编码 不在 A 库产品库存的编码中  会有记录
    这说明,有些产品编码不在A库产品库存的产品编码中.2.如果加上
    且产品规格不在 A库产品库存的规格中 就不会有记录
    这说明,那些产品编码不在A库产品库存的产品编码中的产品规格,在A库的产品规格中.一般,规格不会作主键,而将产品编码作主键,不同编码产品有可能有相同的规格,因此,最后的结论应该是:你的入库记录中,有一些编码不在A库中.检查一下你用
    SELECT 产品编码,产品名称,产品规格,产品单位,产品单价
    FROM 入库记录  
    WHERE 产品编码 NOT IN (SELECT 产品编码 FROM 产品库存 WHERE 仓库编码='A' )  
    查出来的记录,是些什么产品.