Oracle: как сравнить два набора данных? - PullRequest
2 голосов
/ 20 февраля 2012

Здесь ответили на вопрос: Oracle: мне нужно "частичное" внешнее соединение.Посмотрите на изображение

Посмотрите на стол.Я выполнил объединение столбца CodA из таблицы A, CodB из таблицы B. Если у меня следующая ситуация, мое сравнение идет не так, как надо.

Я хотел бы увидеть результат, как на третьем изображении,Должен ли я сделать это с помощью полного внешнего JOIN?

SELECT master, detail, codA, codB, DECODE(A, B, 'Equal', 'Not equal')
FROM A, B
WHERE a.master = b.master
AND a.detail = b.detail

Мне также нужно сделать полное внешнее соединение JUST для оператора a.CodA = b.CodB, но не для a.master= заявление мастера.Он должен использовать обычный JOIN там.

enter image description hereenter image description here

enter image description here

1 Ответ

1 голос
/ 20 февраля 2012

Полное внешнее объединение также будет отображать элементы, которые существуют в B, а не в A

Например, если у вас было codB = 5, в вашем последнем изображении у вас также будет запись с CodA =NULL и CodB = 5.Другой вариант - оставить таблицы объединения A и B. Тот же самый пример, который я только что представил, приведет к тому же изображению, которое вы предоставили с левым объединением.

В заключение, если вы хотите ТАКЖЕ отображать в своих элементах результатовиз B, которые не совпадают с элементами из A, идут на полное внешнее соединение.Если вы хотите отобразить все элементы из A и их совпадения (или нет) с элементами из B, перейдите к левому соединению B.

PS: В настоящее время вы выполняете внутреннее соединение, это означает, что вы сопоставляете элементы вA, у которого есть соответствующий элемент в B

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...