当前位置: 首页 > 知识库问答 >
问题:

为什么我不能做一个完整的外部连接

戚良弼
2023-03-14

我有一个db2查询,今天我意识到需要扩展该查询。

我的表使用联接已经相当复杂了,所以我并不想添加联合查询。我想做一个完整的外部连接。

    SELECT 
        a.id
        ,a.city
        ,a.state
        ,case when a.thing = b.thing then a.thing else b.thing end
        ,sum( case when c.thing = 'thing' then 1 else 0 end)
        ,b.id
        ,b.name

    FROM
        a
    INNER JOIN b -- I want to change this to FULL OUTER JOIN
        ON a.id = b.id
    LEFT JOIN c
        ON a.id = c.id
    LEFT JOIN (d
        INNER JOIN e 
            ON d.id = e.id
        )
    WHERE 
        --logic
    GROUP BY
        --for the aggregate functions
    ORDER BY
        --logic


我想是因为另一个左联接。

共有1个答案

庄嘉
2023-03-14

它可能无法将外部联接与左侧联接组合在一起。您可能必须将外部联接设置为子查询(还添加了一些丢失的别名和ON子句):

SELECT 
    ab.a_id
    ,ab.city
    ,ab.state
    ,ab.thing
    ,sum( case when c.thing = 'thing' then 1 else 0 end)
    ,ab.b_id
    ,ab.name

FROM
(
    SELECT 
        a.id a_id
        ,a.city
        ,a.state
        ,case when a.thing = b.thing then a.thing else b.thing end thing
        ,b.id b_id
        ,b.name

    FROM
        a
    FULL OUTER JOIN b 
        ON a.id = b.id
)  ab
LEFT JOIN c
    ON ab.id = c.id
LEFT JOIN (d
    INNER JOIN e 
        ON d.id = e.id
    ) f
    ON ...
WHERE 
    --logic
GROUP BY
    --for the aggregate functions
ORDER BY
    --logic
 类似资料:
  • 问题内容: 如果html文件是本地文件(在我的C驱动器上),则可以使用,但是如果html文件在服务器上并且图像文件是本地文件,则无法使用。这是为什么? 任何可能的解决方法? 问题答案: 如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,则将是一个安全漏洞。 解决此问题的唯一方法是在浏览器中构建扩展。Firefox扩展和IE扩展可以访问本地资源。Chrome的限制更为严

  • 如何强制spark中数据包的完全外部联接以使用Boradcast散列联接?下面是代码片段: 但是,当我使用“”作为联接类型时,spark出于某种未知原因决定使用。有人知道怎么解决这个问题吗?根据我在左外部联接中看到的性能,将有助于加快应用程序的速度。

  • 这是一个关于data.table连接语法的哲学问题。我发现越来越多的数据.表的用途,但仍在学习... data.tables的联接格式非常简洁、方便和高效,但据我所知,它只支持内部联接和右外部联接。要获得左或完全的外部联接,我需要使用: --Y中的所有行--右外部联接(默认) --仅限在X和Y中都匹配的行--内部联接 --来自X和Y的所有行--完全外部联接 --X中的所有行--左外部联接 在我看来

  • 创建jar文件时,我编写了以下java文件: 我将文件命名为MyClass.java。 我通过键入“javac src/main/java/myjar/myclass.java”创建了一个类文件 我通过命令“jar cvf myjar.jar src/main/java/myjar/myclass.class”生成了一个jar文件 在IDE中,我写了“import myjar.myclass”,单

  • 问题内容: 我正在构建一个小型应用程序,并在表之间建立外键关系。但是我对为什么我真的需要这个感到困惑?有什么好处- 在编写不需要执行任何联接的查询时,它对我有帮助吗?这是我的数据库的示例片段: 两者之间存在关键关系。和。 我可以执行这样的查询吗? 既然MySQL应该知道表之间的关系?如果不是,那么外键在数据库设计中的真正功能是什么? 问题答案: 外键提供引用完整性。外键列中的数据经过验证-该值只能