У меня проблема с поиском запроса с внешним соединением, как и ожидалось.LEFT JOIN on Oracle
Данные:
TABLE a:
id
1
2
3
TABLE b:
id aid
11 1
12 2
TABLE c:
id bid
21 11
22 12
Этот запрос:
SELECT *
FROM
a
LEFT JOIN
b
ON a.id = b.aid
INNER JOIN c
ON b.id = c.bid
Мне нужно, чтобы получить все a
и где возможно b
и c
, как это:
a.id b.id b.aid c.id c.bid
1 11 1 21 11
2 12 2 22 12
3 null null null null
INNER JOIN
просто является расширением b
, когда предшествующий LEFT JOIN
соответствует.
Вместо этого, я получаю:
a.id b.id b.aid c.id c.bid
1 11 1 21 11
2 12 2 22 12
Без второго INNER JOIN
я получаю, как и ожидалось:
a.id b.id b.aid
1 11 1
2 12 2
3 null null
Там, кажется, другое определение соединений между Oracle и MS SQL Server , (ВЫКЛЮЧАЕТСЯ, ЧТОБЫ НЕПРАВИЛЬНО)
Я не могу понять, как написать запрос, чтобы получить ожидаемый результат.
Там нет никакой разницы в внутренней и левое соединение между Sql Server и Oracle – edc65
я бы ** очень ** удивлен если SQL Server вернет для этого что-то другое. Вам нужно внешнее соединение для второго соединения, а также –
(второй) внутренний joi не может присоединиться к нулевому значению для b.id .. так что ваше исправление кажется неправильным .. oracle и ms sql работают одинаково. join – scaisEdge