日期:2014-05-17  浏览次数:20433 次

求SQL语句,表A一条数据对表B多条数据, 根据表B的条件筛选出表A
有表Order订单表
ID  OrderNo
1   O-0101
2   O-0102
3   O-0103
4   O-0104


表Product 产品表
ID  OrderID(Order表外键) ProductName
1   1                    苹果
2   1                    香蕉 
3   1                    梨
4   2                    菠萝
5   2                    榴莲

表Invoice 发票表(一个产品对应一条发票记录)
ID  ProduceID(Product表ID)  Date(日期)        Arrival(是否到货)
1    1                      2013-01-01          1
2    1                      2013-01-02          1
3    1                      2013-01-03          1
4    2                      2013-01-04          0
5    2                      2013-01-05          1

现在要筛选出Order订单表的数据,根据Invoice 发票表的时间在 2013-01-01-2013-01-05之间并且已经到货(Arrival为1)的Order订单数据, 只要Invoice里面有一条数据不满足条件,Order表的相应数据就被筛选掉! 
求写Sql语句
sql sqlserver

------解决方案--------------------
select * from order
where id in(select orderid from product
                where id in(select ProduceID from Invoice 
                                 where date>='2013-01-01' 
                                  and date<='2013-01-05'
     &