. 
我想从"***...***"行下面的3个原始的数据表中得到下面这张查询表,请问如何写SQL语句???----------------------------------------------------------------
 物料编号   物料名称   生产计量单位   销售计量单位  销售换算系数
   001       豆沙包        公斤            个            20
   002       白菜包        公斤            个            28
   003       茄子包        公斤            个            25
   004       猪肉包        公斤            个            16
   005       羊肉包        公斤            个            15
   006       速冻包         个             袋            30
   ...         ...          ...            ..            ...
----------------------------------------------------------------***************************************************************** 表1(物料表):
------------------------------------------------------
  物料编号   物料名称   生产计量单位   销售计量单位
    001       豆沙包        01             02
    002       白菜包        01             02
    003       茄子包        01             02
    004       猪肉包        01             02
    005       羊肉包        01             02
    006       速冻包        02             03
    ...         ...         ..             ..
    ...         ...         ..             ..
------------------------------------------------------
* 表2(计量单位表):
------------------------------------------------------
  单位编号    单位名称
     01         公斤
     02          个
     03          袋
     ...         ...
------------------------------------------------------
* 表2(计量单位换算表): (说明:计量单位1的数量=计量单位2的数量×换算系数)
------------------------------------------------------
  物料编号    计量单位1    计量单位2   换算系数
    001          01           02          20 
    002          01           02          28 
    003          01           02          25 
    004          01           02          16 
    005          01           02          15 
    006          02           03          30 
    ...          ..           ..          ..
------------------------------------------------------

解决方案 »

  1.   

    select a.物料编号,a.物料名称 ,c.单位名称 生产计量单位,d.单位名称 销售计量单位,b.换算系数 销售换算系数
    from 物料表 a
      join 计量单位换算表 b on a.物料编号=b.物料编号
      join 计量单位表 c on b.计量单位1=c.单位编号
      join 计量单位表 d on b.计量单位2=d.单位编号
      

  2.   

    三个表 left join  
      

  3.   

    --------------------------------------------------------------------------
    --  Author : htl258(Tony)
    --  Date   : 2010-04-22 12:48:02
    --  Version:Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
    --          Jul  9 2008 14:43:34 
    --          Copyright (c) 1988-2008 Microsoft Corporation
    --          Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
    --------------------------------------------------------------------------
    --> 生成测试数据表:物料表IF NOT OBJECT_ID('[物料表]') IS NULL
    DROP TABLE [物料表]
    GO
    CREATE TABLE [物料表]([物料编号] NVARCHAR(10),[物料名称] NVARCHAR(10),[生产计量单位] NVARCHAR(10),[销售计量单位] NVARCHAR(10))
    INSERT [物料表]
    SELECT '001',N'豆沙包','01','02' UNION ALL
    SELECT '002',N'白菜包','01','02' UNION ALL
    SELECT '003',N'茄子包','01','02' UNION ALL
    SELECT '004',N'猪肉包','01','02' UNION ALL
    SELECT '005',N'羊肉包','01','02' UNION ALL
    SELECT '006',N'速冻包','02','03'
    GO
    --SELECT * FROM [物料表]--> 生成测试数据表:计量单位表IF NOT OBJECT_ID('[计量单位表]') IS NULL
    DROP TABLE [计量单位表]
    GO
    CREATE TABLE [计量单位表]([单位编号] NVARCHAR(10),[单位名称] NVARCHAR(10))
    INSERT [计量单位表]
    SELECT '01',N'公斤' UNION ALL
    SELECT '02',N'个' UNION ALL
    SELECT '03',N'袋'
    GO
    --SELECT * FROM [计量单位表]--> 生成测试数据表:计量单位换算表IF NOT OBJECT_ID('[计量单位换算表]') IS NULL
    DROP TABLE [计量单位换算表]
    GO
    CREATE TABLE [计量单位换算表]([物料编号] NVARCHAR(10),[计量单位1] NVARCHAR(10),[计量单位2] NVARCHAR(10),[换算系数] INT)
    INSERT [计量单位换算表]
    SELECT '001','01','02',20 UNION ALL
    SELECT '002','01','02',28 UNION ALL
    SELECT '003','01','02',25 UNION ALL
    SELECT '004','01','02',16 UNION ALL
    SELECT '005','01','02',15 UNION ALL
    SELECT '006','02','03',30
    GO
    --SELECT * FROM [计量单位换算表]-->SQL查询如下:
    select a.物料编号,a.物料名称 ,c.单位名称 生产计量单位,d.单位名称 销售计量单位,b.换算系数 销售换算系数
    from 物料表 a
      join 计量单位换算表 b on a.物料编号=b.物料编号
      join 计量单位表 c on b.计量单位1=c.单位编号
      join 计量单位表 d on b.计量单位2=d.单位编号
    /*
    物料编号       物料名称       生产计量单位     销售计量单位     销售换算系数
    ---------- ---------- ---------- ---------- -----------
    001        豆沙包        公斤         个          20
    002        白菜包        公斤         个          28
    003        茄子包        公斤         个          25
    004        猪肉包        公斤         个          16
    005        羊肉包        公斤         个          15
    006        速冻包        个          袋          30(6 行受影响)
    */
      

  4.   

    select
     a.物料编号,a.物料名称 ,c.单位名称 生产计量单位,d.单位名称 销售计量单位,b.换算系数 销售换算系数
    from
     物料表 a
    join
     计量单位换算表 b
    on
     a.物料编号=b.物料编号
    join
     计量单位表 c 
    on
     b.计量单位1=c.单位编号
    join
     计量单位表 d 
    on
     b.计量单位2=d.单位编号
      

  5.   

    To htl258:3ks,还有问题:
    1.  here:'join' 是否等价于 'inner join' ?
    2.  如果计量单位换算表还存在这样的情况:
        ---------------------------------------------------
        * 表3(计量单位换算表)
          物料编号      计量单位1      计量单位2      换算系数
           006(速冻包)    02(个)         03(袋)          30
           006              01(公斤)       02(个)          50
        ---------------------------------------------------
        * 表1(物料表):
         物料编号 物料名称 生产计量单位    销售计量单位  包装计量单位
           006     速冻包       01(公斤)      03(袋)        02(个)
        ---------------------------------------------------
        要查询出:
           006   速冻包   个   袋    30
     
    如何写SQL?