谢谢libin_ftsafe和wwh999, 大概清楚怎么做了,原来一直看书看的迷迷糊糊的。 我刚学SQL Server 以后请你们多多指教。
--生成测试用数据 use pubs go CREATE TABLE 类型表(类型ID INT,类型名称 varchar(20),类型描述 varchar(30)) INSERT INTO 类型表 SELECT 1,'工控测绘','工控测绘的描述性文字' UNION ALL SELECT 2,'数控设备','描述项'CREATE TABLE 仪器表(仪器ID INT,所属类型ID INT,仪器名称 varchar(10),仪器描述 varchar(30),出产编号 varchar(10),参数1 varchar(10),参数2 varchar(10)) INSERT INTO 仪器表 SELECT 1,1,'仪器1','描述项','NO.1','BGK4400','0+450' UNION ALL SELECT 2,1,'仪器2','描述项','BGK4400','NO.2','0+455' UNION ALL SELECT 3,1,'仪器3','描述项','BGK4400','NO.3','0+460' GO CREATE TABLE 测试表(自动序号 INT IDENTITY(1,1),仪器ID INT,测试时间 datetime ,读数1 Decimal(10,2),读数2 Decimal(10,2)) INSERT INTO 测试表 SELECT 1,GETDATE(),4104.4,7.8 INSERT INTO 测试表 SELECT 2,GETDATE(),4105,7.8 INSERT INTO 测试表 SELECT 3,GETDATE(),4103,7.8 GO --查询效果演示 SELECT * FROM 类型表 SELECT * FROM 仪器表 SELECT * FROM 测试表SELECT 类型名称 AS 仪器种类,仪器名称,出产编号,参数1,参数2,测试时间,读数1,读数2 FROM 类型表 A,仪器表 B,测试表 C WHERE A.类型ID=B.所属类型ID AND B.仪器ID=C.仪器ID GO --删除测试用数据 DROP TABLE 类型表,仪器表,测试表
PK仪器类型编号和FK仪器编号是怎样确立层级关系的,设为外部键吗?
----------------------------------------------------------------
A: 类型表 (类型ID,名称,描述)
类型ID 主键(作为B表的外键)B: 明细表 (仪器ID,所属类型ID,仪器名称,描述,参数1,参数2..更多字段)
仪器ID 主键
所属类型ID外键,与A表的类型ID对应关联
----------------------------------------------------------------
大概清楚怎么做了,原来一直看书看的迷迷糊糊的。
我刚学SQL Server 以后请你们多多指教。
use pubs
go
CREATE TABLE 类型表(类型ID INT,类型名称 varchar(20),类型描述 varchar(30))
INSERT INTO 类型表 SELECT 1,'工控测绘','工控测绘的描述性文字'
UNION ALL SELECT 2,'数控设备','描述项'CREATE TABLE 仪器表(仪器ID INT,所属类型ID INT,仪器名称 varchar(10),仪器描述 varchar(30),出产编号 varchar(10),参数1 varchar(10),参数2 varchar(10))
INSERT INTO 仪器表 SELECT 1,1,'仪器1','描述项','NO.1','BGK4400','0+450'
UNION ALL SELECT 2,1,'仪器2','描述项','BGK4400','NO.2','0+455'
UNION ALL SELECT 3,1,'仪器3','描述项','BGK4400','NO.3','0+460'
GO
CREATE TABLE 测试表(自动序号 INT IDENTITY(1,1),仪器ID INT,测试时间 datetime ,读数1 Decimal(10,2),读数2 Decimal(10,2))
INSERT INTO 测试表 SELECT 1,GETDATE(),4104.4,7.8
INSERT INTO 测试表 SELECT 2,GETDATE(),4105,7.8
INSERT INTO 测试表 SELECT 3,GETDATE(),4103,7.8 GO
--查询效果演示
SELECT * FROM 类型表
SELECT * FROM 仪器表
SELECT * FROM 测试表SELECT 类型名称 AS 仪器种类,仪器名称,出产编号,参数1,参数2,测试时间,读数1,读数2
FROM 类型表 A,仪器表 B,测试表 C
WHERE A.类型ID=B.所属类型ID AND B.仪器ID=C.仪器ID
GO
--删除测试用数据
DROP TABLE 类型表,仪器表,测试表
------------------------------------------------------------------------------
上面的语句执行的结果,你看看,希望能有所帮助,不枉我一翻狂敲键盘啊...呵呵!
类型ID 类型名称 类型描述
----------- -------------------- ------------------------------
1 工控测绘 工控测绘的描述性文字
2 数控设备 描述项(所影响的行数为 2 行)仪器ID 所属类型ID 仪器名称 仪器描述 出产编号 参数1 参数2
----------- ----------- ----- ---------- ---------- ---------- ----------
1 1 仪器1 描述项 NO.1 BGK4400 0+450
2 1 仪器2 描述项 BGK4400 NO.2 0+455
3 1 仪器3 描述项 BGK4400 NO.3 0+460(所影响的行数为 3 行)自动序号 仪器ID 测试时间 读数1 读数2
----------- ----------- ------------------------------------------------------ ------------ ------------
1 1 2006-07-19 15:34:00 4104.40 7.80
2 2 2006-07-19 15:34:00 4105.00 7.80
3 3 2006-07-19 15:34:00 4103.00 7.80(所影响的行数为 3 行)
仪器种类 仪器名称 出产编号 参数1 参数2 测试时间 读数1 读数2
-------------------- ----- ---------- ---------- ---------- ------------------------------------------------------ ------------ ------------
工控测绘 仪器1 NO.1 BGK4400 0+450 2006-07-19 15:34:00 4104.40 7.80
工控测绘 仪器2 BGK4400 NO.2 0+455 2006-07-19 15:34:00 4105.00 7.80
工控测绘 仪器3 BGK4400 NO.3 0+460 2006-07-19 15:34:00 4103.00 7.80(所影响的行数为 3 行)