现在有 项目 合同 和产品 三个概念表 p_Project2Product (项目与产品的关系表)np_Contract2Product (合同与产品的关系表)p_Project(项目表)ss_Project2Contract(项目与合同表)现在在建项目进行选择合同的时候要根据条件过滤合同,过滤条件就是 合同下的所有产品均与项目进行了关联,此合同不显示,有一个产品没与项目关联,该合同都能显示这个SQL语句怎么写???

解决方案 »

  1.   

    给出表结构,否则怎么写?初步看了一下,使用left join进行几个表的连接,问题应该不大
      

  2.   

    p_Project2Product 表结构 ProjGUID,ProductGUID
    np_Contract2Product 表里有 ContractGUID,ProductGUID
    p_Project 表里有个 ProjGUID
    ss_Project2Contract 表里有 ProjGUID,ContractGUID主要的链接字段就这些。
      

  3.   

    不知道是不是楼主想要的:
    select a.projgudi,a.contractguid
    from ss_Project2Contract as a left join p_Project2Product as b on a.projguid=b.projguid 
    left join np_Contract2Product  as c on a.contractguid=c.contractguid
    group by a.projgudi,a.contractguid
    having COUNT(distinct b.productguid)<>COUNT(distinct c.productguid)
      

  4.   

    项目和产品表 Group 后 与合同 产品表 Group不同的显示出来就行了