.
我想从"***...***"行下面的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
... .. .. ..
------------------------------------------------------
我想从"***...***"行下面的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
... .. .. ..
------------------------------------------------------
from 物料表 a
join 计量单位换算表 b on a.物料编号=b.物料编号
join 计量单位表 c on b.计量单位1=c.单位编号
join 计量单位表 d on b.计量单位2=d.单位编号
-- 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 行受影响)
*/
a.物料编号,a.物料名称 ,c.单位名称 生产计量单位,d.单位名称 销售计量单位,b.换算系数 销售换算系数
from
物料表 a
join
计量单位换算表 b
on
a.物料编号=b.物料编号
join
计量单位表 c
on
b.计量单位1=c.单位编号
join
计量单位表 d
on
b.计量单位2=d.单位编号
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?