【问题标题】:SQL Combine two tables in a ViewSQL 在一个视图中合并两个表
【发布时间】:2013-10-31 02:59:53
【问题描述】:

我有三个表(上面的简化表图)。从这三个表中,我想创建一个视图,它将是 TableA 和 TableB 的组合(tableA 中的所有行和 TableB 中的所有行,没有重复)。问题是我不想要 TableA 中的外键,而是想要视图中 TableC 中的名称。一行如下所示

Id、FullName_A、FullName_B

这可能吗?

【问题讨论】:

    标签: sql sql-server join union


    【解决方案1】:

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

    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
    

    【讨论】:

    • 在你解决帖子后我已经为此工作了几个小时零 5 分钟,太棒了
    • 其实我想要A和B的所有记录,不管Id是否相同
    • 实际上这并没有提取所有记录,我认为它可以正常工作,但我只是比较了两个表的大小,我只得到了两个表的一小部分。我想要两个表中的所有记录。
    • 我认为问题是某些外键为空,这会导致行不被拉出吗?
    • 将 INNER 联接更改为 LEFT 联接似乎对我有用,这有意义吗?
    猜你喜欢
    • 2013-04-24
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多