主要针对"select 字段1,字段2,...,字段n from 表或多表联合查询 where 条件 for xml auto"类似语句的讨论
本人在使用以上语句生成XML数据时,发现了一些SQL Server 2000生成XML数据的一些规律,给我的感觉是要求太苛刻了,从中也可以看出微软早期对XML支持的不足.现在就把我的这些体会写给大家看看,不对不足的地方望大家指出。
XML可以很方便地描述树型结构数据,相对于关系型数据来说,这方面就有点不足。为此从关系型数据转换到树型结构数据就比较麻烦。还好,SQL Server 2000提供了这方面的转换接口。但想转换好也是有条件的。
前提:SQL Server 2000已经有描述树型结构数据的基本表(视图)[如大学里的院系班的树型结构信息,院信息一个表、系信息一个表、班信息一个表,表之间已经建立了主外键关系]
1、要显示的字段的位置是有顺序的,如要正确显示院系班的树型结构关系,转换SQL语句应该这么写:
select 院,系,班 from 院,系,班 where 条件 for xml auto
2、尽量不要对显示的字段作任何运算与处理,因为这样会破坏基本表(视图)的数据作为某一层数据的约定。
比如对"select 院,系,班 from 院,系,班 where 条件 for xml auto" 语句的“系”字段作了一些运算与处理后,
则SQL Server 2000无法正确地描述"系"字段生成XML数据后属于那一层数据。一般情况下,
SQL Server 2000会把”系“字段自动加进”院“或”班“一层。这样就得不到我們想要的结果。
3、多表联合查询时,不要有子查询,因为即使你用了子查询也是没用的,
"select 字段1,字段2,...,字段n from 表或多表联合查询 where 条件 for xml auto"这样的转换语句是只认基本表与视图的。 别妄想用子查询实现一些复杂的功能。
以上是自已在使用"select 字段1,字段2,...,字段n from 表或多表联合查询 where 条件 for xml auto"语句时的一些体会,胡言乱语了一通。