sql for xml嵌套查询,怎么出这个错?

mymantou 2011-04-06 03:06:02
我想查询出来的结果是,架构名节点,后头跟着架构下各表的名字。
select SchemaName.TABLE_SCHEMA as "SchemaName/@name",
(select sys.tables.name as "TableName/@name"
from
sys.tables
where SchemaName.TABLE_NAME= (select sys.schemas.name from
sys.tables,sys.schemas where sys.tables.schema_id=sys.schemas.schema_id)
for xml auto,type,elements)
from
INFORMATION_SCHEMA.TABLES as SchemaName
order by SchemaName.TABLE_SCHEMA
for xml auto,type



提示错误:
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangCK 2011-04-06
  • 打赏
  • 举报
回复
select name ,
(select name from sys.tables
where a.schema_id=schema_id
for xml raw('TableName'),type)
from sys.schemas AS a
where exists(select * from sys.tables where a.schema_id=schema_id)
for xml raw('SchemaName')


select name,
(select name from sys.tables
where a.schema_id=schema_id
for xml raw('TableName'),type)
from (select distinct a.schema_id,b.name
from sys.tables as a
join sys.schemas as b
on a.schema_id=b.schema_id) as a
FOR xml raw('SchemaName')
mymantou 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liangck 的回复:]
SQL code
select name ,
(select name from sys.tables
where a.schema_id=schema_id
for xml raw('TableName'),type)
from sys.schemas AS a
for xml raw('SchemaName')
[/Quote]


非常感谢,
不过查询出来的包括了系统的架构。正在改
liangCK 2011-04-06
  • 打赏
  • 举报
回复
select name ,
(select name from sys.tables
where a.schema_id=schema_id
for xml raw('TableName'),type)
from sys.schemas AS a
for xml raw('SchemaName')
mymantou 2011-04-06
  • 打赏
  • 举报
回复
自己顶上来,还没解决。。。
mymantou 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liangck 的回复:]
没看语句,你想得到的xml结构是怎样的?
[/Quote]

<SchemaName name="">
<TableName name=""/>
<TableName name=""/>
</SchemaName>

<SchemaName name="">
</SchemaName>
liangCK 2011-04-06
  • 打赏
  • 举报
回复
没看语句,你想得到的xml结构是怎样的?
mymantou 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
SQL code
select SchemaName.TABLE_SCHEMA as "SchemaName/@name",
(select sys.tables.name as "TableName/@name"
from
sys.tables
where SchemaName.TABLE_NAME in(select sys.schemas.name from
sys.……
[/Quote]


谢谢回复!
现在这样的查询结果里没有表名,只有架构名了
--小F-- 2011-04-06
  • 打赏
  • 举报
回复
select SchemaName.TABLE_SCHEMA as "SchemaName/@name",
(select sys.tables.name as "TableName/@name"
from
sys.tables
where SchemaName.TABLE_NAME in(select sys.schemas.name from
sys.tables,sys.schemas where sys.tables.schema_id=sys.schemas.schema_id)
for xml auto,type,elements)
from
INFORMATION_SCHEMA.TABLES as SchemaName
order by SchemaName.TABLE_SCHEMA
for xml auto,type

34,589

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧