【发布时间】:2011-04-29 09:35:37
【问题描述】:
我在 Oracle 数据库中有两个表(A 和 G),可以根据帐号连接在一起。对此的一个警告是,其中一个表 (G) 的记录比另一个少大约 80 条。当我同时查询这两个表时,我需要获取所有行,以便我们在缺少的 80 行的列中看到 NULL 数据。
我目前有一个 Oracle 语句,它使用以下“旧”语法执行左外连接查询:
SELECT A.AccountNo,
A.ParcelNo,
A.LocalNo,
A.PrimaryUseCode,
A.DefaultTaxDistrict,
RTRIM(G.Section),
RTRIM(G.Township),
RTRIM(g.Range)
FROM tblAcct A, tblAcctLegalLocation G
WHERE A.verstart <= '20100917999' AND A.verend > '20100917999' AND A.DefaultTaxDistrict = '2291'
AND (SUBSTR(A.AccountNo,1,1) = 'R' or SUBSTR(A.AccountNo,1,1)= 'I')
AND SUBSTR(a.ParcelNo,1,1)<> '7' and substr(a.ParcelNo,1,1)<>'8'
AND A.AcctStatusCode IN ('A', 'T', 'E')
AND A.AccountNo = G.AccountNo(+)
AND G.verstart(+) <= '20100917999' and G.verend(+) > '20100917999'
ORDER BY A.ParcelNo, A.LocalNo
我正在尝试将此查询转换为“标准”LEFT JOIN 类型查询,因为我被告知较新版本的 Oracle 支持此语法。我已经尝试了基本的
LEFT OUTER JOIN ON A.AccountNo = G.AccountNo
但这似乎不起作用。我的查询最终返回的行数比全部少 80 行。
谁能告诉我我遗漏了什么或如何正确格式化查询?
【问题讨论】:
标签: sql oracle outer-join