У меня есть две таблицы (A и G) в базе данных Oracle, которые можно объединить на основе номера счета.Единственное предостережение: одна из таблиц (G) имеет примерно на 80 записей меньше, чем другая.Когда я запрашиваю две таблицы вместе, мне нужно получить все строки, чтобы мы увидели данные NULL в столбцах для пропущенных 80 строк.
В настоящее время у меня есть оператор 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 строк меньше полной суммы.
Кто-нибудь может мне сказать, что мне не хватает или как правильно отформатировать запрос?