【问题标题】:Why can I not do a full outer join为什么我不能进行完全外连接
【发布时间】:2015-10-11 03:29:52
【问题描述】:

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

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

目前正在显示

选择 援助 ,一座城市 ,一个状态 ,case 当 a.thing = b.thing then a.thing else b.thing end ,sum(当 c.thing = 'thing' then 1 else 0 end) ,出价 ,b.名称 从 一种 INNER JOIN b -- 我想将其更改为 FULL OUTER JOIN ON a.id = b.id 左连接 c ON a.id = c.id 左连接(d 内连接 ON d.id = e.id ) 在哪里 - 逻辑 通过...分组 --对于聚合函数 订购方式 - 逻辑

当我尝试进行完全外部联接时,有人可以告诉我“此查询不支持完全外部联接”吗?我该如何克服呢?

我认为这是因为其他左连接。

【问题讨论】:

  • 您有 5 个表,4 个 JOIN 子句,但只有 3 个 ON 子句。这是你的意思吗?
  • 我相信是的。我在 select 语句中省略了一些 c、d 和 e Case When 和聚合函数。
  • @Emwat 。 . .请编辑您的问题并包含产生错误的查询。
  • 平台、版本和 SQL 代码或返回的 SQL 状态总是很好。

标签: sql db2


【解决方案1】:

它可能无法将外连接与左连接结合起来。您可能必须使外部联接成为子查询(还添加了一些缺少的别名和 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

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2019-01-12
    • 2012-09-28
    相关资源
    最近更新 更多