SQL将两个表合并到一个视图中

SQL将两个表合并到一个视图中,sql,sql-server,join,union,Sql,Sql Server,Join,Union,我有三张表(上面的简化表)。从这三个表中,我想创建一个结合了TableA和TableB的视图(TableA中的所有行和TableB中的所有行都没有重复项)。问题是我不想要TableA中的外键,而是想要视图中TableC中的名称。一排像下面这样 Id,全名,全名 这可能吗?如果我理解正确,下面的示例将满足您的需要: SELECT A.Id, C1.FullName AS APerson, C2.FullName As BPerson FROM TableA AS A LEFT JOIN Tab

我有三张表(上面的简化表)。从这三个表中,我想创建一个结合了TableA和TableB的视图(TableA中的所有行和TableB中的所有行都没有重复项)。问题是我不想要TableA中的外键,而是想要视图中TableC中的名称。一排像下面这样

Id,全名,全名


这可能吗?

如果我理解正确,下面的示例将满足您的需要:

SELECT A.Id, C1.FullName AS APerson, C2.FullName As BPerson
FROM TableA AS A
  LEFT JOIN TableC AS C1 ON A.FK_PersonA = C1.Id
  LEFT JOIN TableC AS C2 ON A.FK_PersonB = C2.Id
UNION
SELECT B.Id, B.FullName1 AS APerson, B.FullName2 AS BPerson
FROM TableB AS B

如果我对您的理解正确,以下示例将为您提供所需:

SELECT A.Id, C1.FullName AS APerson, C2.FullName As BPerson
FROM TableA AS A
  LEFT JOIN TableC AS C1 ON A.FK_PersonA = C1.Id
  LEFT JOIN TableC AS C2 ON A.FK_PersonB = C2.Id
UNION
SELECT B.Id, B.FullName1 AS APerson, B.FullName2 AS BPerson
FROM TableB AS B

在你解完这篇文章后,我已经为此工作了几个小时零五分钟,令人惊讶的是,实际上我想要A和B的所有记录,不管是否相同,实际上这并没有拉取所有记录,我认为它是有效的,但我只是比较了两个表的大小,我只得到了两个表中的一小部分。我想要两个表中的所有记录。我想问题是一些外键为null,这会导致行不能被提取吗?将内部连接更改为左连接似乎对我有效,这有意义吗?在您解决帖子后,我已经为此工作了数小时5分钟,令人惊讶的是,实际上我想要A和B的所有记录,不管是否相同,实际上这并没有拉取所有记录,我认为这是可行的,但我只是比较了两个表的大小,我只得到了两个表中非常小的一部分。我想要两个表中的所有记录。我认为问题是一些外键为空,这会导致行不能被拉入吗?将内部连接更改为左连接似乎对我有效,这有意义吗?