求SQL, 
有两个表 
订货总表(订货编号,订货时间,.....订货总金额) 
订货明细表(订货编号,....是否到货) 
我想查询出订货明细表中全部到货的订货总表的所有字段,谢谢。 
例如: 
订货总表(订货编号,订货时间,.....订货总金额) 
0001,2009-07-01,.....,200 
0002,2009-07-02,.....,300 
0003,2009-07-03,.....,500 
订货明细表(订货编号,....是否到货) 
0001,....A商品,否 
0001,....d商品,否 
0002,....A商品,是 
0002,....b商品,是 
0002,....c商品,是 
0003,....c商品,是 
0003,....e商品,否 
查询的结果应为: 
0002,2009-07-02,.....,300 

解决方案 »

  1.   

    select  订货编号,订货时间,.....订货总金额 
    订货总表 inner jion 订货明细表where  订货明细表.是否到=是and  订货总表.ID=订货明细表.ID
      

  2.   

    CREATE TABLE 订货总表(订货编号 VARCHAR(10),订货时间 DATETIME,订货总金额 MONEY) 
    INSERT 订货总表
    SELECT '0001','2009-07-01',200 UNION
    SELECT '0002','2009-07-02',300 UNION
    SELECT '0003','2009-07-03',500 
    CREATE TABLE 订货明细表2(订货编号 VARCHAR(10),商品 VARCHAR(10),是否到货 VARCHAR(10)) 
    INSERT 订货明细表2
    SELECT '0001','A商品','否'UNION
    SELECT '0001','d商品','否' UNION
    SELECT '0002','A商品','是' UNION
    SELECT '0002','b商品','是' UNION
    SELECT '0002','商品','是' UNION
    SELECT '0003','c商品','是' UNION
    SELECT '0003','e商品','否' ---DROP TABLE 订货总表select DISTINCT  A.* 
    from 订货总表 A 
    INNER JOIN 
    (SELECT 订货编号 FROM 订货明细表2 WHERE 是否到货 ='是'AND 订货编号 NOT IN (SELECT 订货编号 FROM 订货明细表2 WHERE 是否到货 ='否'))AS  B 
      ON A.订货编号=B.订货编号 订货编号       订货时间                                                   订货总金额                 
    ---------- ------------------------------------------------------ --------------------- 
    0002       2009-07-02 00:00:00.000                                300.0000(所影响的行数为 1 行)
      

  3.   

    -- =========================================
    -- -----------t_mac 小编-------------
       ---希望有天成为大虾---- 
    -- =========================================IF OBJECT_ID('订货总表') IS NOT NULL
      DROP TABLE 订货总表
    GO
    CREATE TABLE 订货总表(订货编号 varchar(10),订货时间 datetime,订货金额 int )
    go
    insert 订货总表 SELECT  
    '0001','2009-07-01',200 UNION ALL SELECT 
    '0002','2009-07-02',300 UNION ALL SELECT 
    '0003','2009-07-03',500 
    go
    IF OBJECT_ID('订货明细表') IS NOT NULL
      DROP TABLE 订货明细表
    GO
    CREATE TABLE 订货明细表(订货编号 varchar(10),商品编号 varchar(10),是否到货 char(2) )
    go
    insert 订货明细表 SELECT 
    '0001','A商品','否' UNION ALL SELECT 
    '0001','d商品','否' UNION ALL SELECT 
    '0002','A商品','是' UNION ALL SELECT 
    '0002','b商品','是' UNION ALL SELECT 
    '0002','c商品','是' UNION ALL SELECT 
    '0003','c商品','是' UNION ALL SELECT 
    '0003','e商品','否' select * from 订货总表 t 
    where  not exists (select * from 订货明细表 where 订货编号=t.订货编号 and  是否到货='否' ) 
    /*------------
    (7 行受影响)
    订货编号       订货时间                    订货金额
    ---------- ----------------------- -----------
    0002       2009-07-02 00:00:00.000 300(1 行受影响)
    (1 行受影响)
    -------*/
      

  4.   

    有两个表 
    订货总表(订货编号,订货时间,.....订货总金额) 
    订货明细表(订货编号,....是否到货) 
    --select a.*
    from 订货总表 a
    left join (select 订货编号,max(是否到货) as col from 订货明细表 group by 订货编号) b
    on a.订货编号 = b.订货编号
    where b.col = '是'
      

  5.   

    IF OBJECT_ID('订货总表') IS NOT NULL
      DROP TABLE 订货总表
    GO
    CREATE TABLE 订货总表(订货编号 varchar(10),订货时间 datetime,订货金额 int )
    go
    insert 订货总表 SELECT  
    '0001','2009-07-01',200 UNION ALL SELECT 
    '0002','2009-07-02',300 UNION ALL SELECT 
    '0003','2009-07-03',500 
    go
    IF OBJECT_ID('订货明细表') IS NOT NULL
      DROP TABLE 订货明细表
    GO
    CREATE TABLE 订货明细表(订货编号 varchar(10),商品编号 varchar(10),是否到货 char(2) )
    go
    insert 订货明细表 SELECT 
    '0001','A商品','否' UNION ALL SELECT 
    '0001','d商品','否' UNION ALL SELECT 
    '0002','A商品','是' UNION ALL SELECT 
    '0002','b商品','是' UNION ALL SELECT 
    '0002','c商品','是' UNION ALL SELECT 
    '0003','c商品','是' UNION ALL SELECT 
    '0003','e商品','否' goselect a.*
    from 订货总表 a
    left join (select 订货编号,min(是否到货) as col from 订货明细表 group by 订货编号) b
    on a.订货编号 = b.订货编号
    where b.col = '是'
    goIF OBJECT_ID('订货明细表') IS NOT NULL
      DROP TABLE 订货明细表
    GO
    IF OBJECT_ID('订货总表') IS NOT NULL
      DROP TABLE 订货总表
    GO/*订货编号       订货时间                                                   订货金额        
    ---------- ------------------------------------------------------ ----------- 
    0002       2009-07-02 00:00:00.000                                300(所影响的行数为 1 行)
    */