我想从下面的全文搜索索引表中获得xml输出。但我的代码产生近工会 我的代码不正确的语法从Sql Server Express 2005中检索结构化的XML
SELECT
Table1.Name 'Table1/Name',
Table1.Email 'Table1/Email',
( SELECT
Table2.Address 'Address',
Table2.Phone 'Phone',
FROM Details Table2
INNER JOIN Regd Table3 ON Table3.Code = Table2.Code
AND (Table3.SubCode = xml.SubCode) AND (Table1.Id = Table3.Id)
FOR XML PATH ('Details'),Type) as 'Table1',
FROM Users Table1
INNER JOIN CONTAINSTABLE(Users,[Name], @SearchKeys) AS KEY_TBL ON Id = KEY_TBL.[KEY]
INNER JOIN Regd Table3 ON Table3.Id = Table1.Id,
OPENXML (@idoc,'/Request/List',2)
WITH (SubCode NVARCHAR(20)) as xml
WHERE (xml.SubCode = '' or Table3.SubCode = xml.SubCode) AND (Table3.Id = Table1.Id)
FOR XML PATH ('List')
UNION
SELECT
SELECT
Table1.Name 'Table1/Name',
Table1.Email 'Table1/Email',
( SELECT
Table2.Address 'Address',
Table2.Phone 'Phone',
FROM Details Table2
INNER JOIN Regd Table3 ON Table3.Code = Table2.Code
AND (Table3.SubCode = xml.SubCode) AND (Table1.Id = Table3.Id)
FOR XML PATH ('Details'),Type) as 'Table1',
FROM Users Table1
INNER JOIN CONTAINSTABLE(Users,[Email], @SearchKeys) AS KEY_TBL ON Id = KEY_TBL.[KEY]
INNER JOIN Regd Table3 ON Table3.Id = Table1.Id,
OPENXML (@idoc,'/Request/List',2)
WITH (SubCode NVARCHAR(20)) as xml
WHERE (xml.SubCode = '' or Table3.SubCode = xml.SubCode) AND (Table3.Id = Table1.Id)
FOR XML PATH ('List')
这里出来把我预计将有
<List>
<Table1>
<Name></Name>
<Email></Email>
<Details>
<Address></Address>
<Phone></Phone>
</Details>
</Table1>
</List>
我想请求XML参数不会有任何用处的这里,因为它是只是一个语法错误
你可以**解释一下你想做什么?你只是向我们扔了一个庞大复杂的SQL语句,没有背景,没有关于涉及的表的信息,它们的结构,它们的数据等。是你在两个地方使用的@ idoc ......这些数据是如何填充的?你可能**可以将这个简化为一个'SELECT',而现在就省略'UNION'部分!?!? – 2011-04-19 12:20:57