SQL JOIN 和 UNION 组合

问题描述 投票:0回答:1

我想连接我的 for 表(如下图) 当我使用第一个和第二个代码时,一切正常,但我没有我需要的所有数据。

第一个代码有效

SELECT *
FROM Erste.dbo.Persons1$ 
LEFT OUTER JOIN Erste.dbo.Adresses1$ 
ON Erste.dbo.Persons1$.Id=Erste.dbo.Adresses1$.Id 
--LEFT OUTER JOIN Erste.dbo.Adresses2$
--ON Erste.dbo.Persons1$.Id=Erste.dbo.Adresses2$.Id
UNION
SELECT * 
From Erste.dbo.Persons2$
LEFT OUTER JOIN Erste.dbo.Adresses2$
ON Erste.dbo.Persons2$.Id=Erste.dbo.Adresses2$.Id

第二个代码工作

SELECT *
FROM Erste.dbo.Persons1$ 
LEFT OUTER JOIN Erste.dbo.Adresses1$ 
ON Erste.dbo.Persons1$.Id=Erste.dbo.Adresses1$.Id 
--LEFT OUTER JOIN Erste.dbo.Adresses2$
--ON Erste.dbo.Persons1$.Id=Erste.dbo.Adresses2$.Id
UNION
SELECT * 
From Erste.dbo.Persons2$
LEFT OUTER JOIN Erste.dbo.Adresses2$
ON Erste.dbo.Persons2$.Id=Erste.dbo.Adresses2$.Id

第一个 SELECT 组合不起作用

SELECT *
FROM Erste.dbo.Persons1$ 
LEFT OUTER JOIN Erste.dbo.Adresses1$ 
ON Erste.dbo.Persons1$.Id=Erste.dbo.Adresses1$.Id 
LEFT OUTER JOIN Erste.dbo.Adresses2$
ON Erste.dbo.Persons1$.Id=Erste.dbo.Adresses2$.Id
UNION
SELECT * 
From Erste.dbo.Persons2$
LEFT OUTER JOIN Erste.dbo.Adresses2$
ON Erste.dbo.Persons2$.Id=Erste.dbo.Adresses2$.Id

错误: 消息 205,第 16 级,状态 1,第 1 行 使用 UNION、INTERSECT 或 EXCEPT 运算符组合的所有查询在其目标列表中必须具有相同数量的表达式。

完成时间:2024-02-27T18:25:24.6084257+01:00

Tables and my code from SQL Server Managment Studio

我正在尝试合并这 4 个表。 你能帮我吗?

sql join union
1个回答
1
投票

非常感谢 xQbert 的帮助。 我就是这样做的。

SELECT FirstName, SecondName, Ulica, Numer
FROM Erste.dbo.Persons1$, Erste.dbo.Adresses1$
WHERE Erste.dbo.Persons1$.ID=Erste.dbo.Adresses1$.ID
UNION
SELECT FirstName, SecondName, Ulica, Numer
FROM Erste.dbo.Persons1$, Erste.dbo.Adresses2$ 
WHERE Erste.dbo.Persons1$.ID=Erste.dbo.Adresses2$.ID
UNION
SELECT FirstName, SecondName, Ulica, Numer
FROM Erste.dbo.Persons2$, Erste.dbo.Adresses2$ 
WHERE Erste.dbo.Persons2$.ID=Erste.dbo.Adresses2$.ID
ORDER BY Numer ASC
© www.soinside.com 2019 - 2024. All rights reserved.