0

我正在尝试加入 3 个这样的视图,然后输出 XML,

view4 equal (SELECT     *
FROM         view1
Join  
SELECT     *
FROM         view2
Join 
SELECT     *
FROM         view3)

 FOR XML RAW;

先生,这个查询有什么问题吗?正如它所说的错误语法

4

1 回答 1

1

我不理解您的某些代码的含义,但这是合法语法的一个示例:

SELECT *
FROM view1
UNION 
SELECT *
FROM view2
UNION 
SELECT *
FROM view3
FOR XML RAW;

请注意,每个查询应返回相同数量的列和相同的数据类型。

UNION也是一个隐式不同的操作。 UNION ALL将返回每个查询的所有行。

这是一个示例,说明如何将不同的表/视图放入联合视图中:

CREATE VIEW myView AS
SELECT ColA, ColB, ColC
FROM view1 -- Has all the columns
UNION 
SELECT ColA, ColB, cast(ColC as varchar(50))
FROM view2 -- ColC is an int but other views have varchar(50)
UNION 
SELECT ColA, null, ColC
FROM view3 -- Has no ColB

并以这种方式返回 XML:

SELECT ColA, ColB, ColC
FROM myView
FOR XML RAW;

正确的连接语法可能如下所示:

SELECT a.ColA, b.ColB, c.ColC
FROM view1 AS a
    JOIN view2 AS b ON a.SomeID = b.SomeID
    JOIN view3 AS c ON b.SomeOtherID = c.SomeOtherID

您可以创建一个视图并将其作为 XML 查询,就像联合示例一样。

于 2013-05-03T13:45:02.723 回答