[英]Oracle using (+) for left outer join
我有使用外部左自我聯接的此查詢,它顯示了我期望的結果:
SELECT c.date, u.user_id from order_detail_trans c
LEFT OUTER JOIN order_detail_trans u
ON u.trans_id = c.trans_id
AND u.trans_type = 'UPDATE DETAIL'
我將一個表自身連接起來,因為我只希望為那些trans_type為“ UPDATE DETAIL”的行填充我的一列(user_id),但是仍然需要顯示該表中的行,而這不是trans類型。 上面的查詢似乎可以解決問題。 我同時獲得了具有trans_types和以'UPDATE DETAIL'作為trans_type顯示user_id的記錄
我需要使用它來與Oracle(+)語法一起使用,這就是我從本源中獲取的內容-https://chartio.com/resources/tutorials/left-and-right-joins-using-the-plus在符號Oracle中/#performing-outer-joins使用該符號 :
SELECT c.date, u.user_id from order_detail_trans c, order_detail_trans u
WHERE u.trans_id(+) = c.trans_id
AND u.trans_type = 'UPDATE DETAIL'
但這不會顯示帶有trans_type而不是'UPDATE DETAIL'以外的行。
用(+)語法重寫第一個查詢以呈現相同結果的正確方法是什么?
需要在文字條件上包含(+)
運算符
舊的外部聯接方法要求您為文字上的條件包括(+)
運算符。
只需戴上您的“復古”精神帽,然后回到90年代。 :)
這種方法的外觀如下:
SELECT
c
.DATE,
u.user_id
FROM
order_detail_trans c,
order_detail_trans u
WHERE
u.trans_id (+) = c.trans_id
AND u.trans_type (+) = 'UPDATE DETAIL'
這是表emp
和dept
的示例:
SCOTT@db>SELECT
2 d.deptno,
3 e.job
4 FROM
5 dept d
6 LEFT OUTER JOIN emp e ON d.deptno = e.deptno
7 and e.job = 'CLERK'
8 GROUP BY
9 d.deptno,
10 e.job
11 ORDER BY
12 1,
13 2;
DEPTNO JOB
10 CLERK
20 CLERK
30 CLERK
40
SCOTT@db>SELECT
2 d.deptno,
3 e.job
4 FROM
5 dept d,
6 emp e
7 WHERE
8 d.deptno = e.deptno (+)
9 AND e.job (+) = 'CLERK'
10 GROUP BY
11 d.deptno,
12 e.job;
DEPTNO JOB
20 CLERK
30 CLERK
10 CLERK
40
信不信由你,我相信大多數Oracle應用產品商店都只使用這種較舊的外部聯接方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.