SQL-запрос для объединения результатов из двух таблиц, но также включает строки, которые не имеют аналогов в другой таблице? - PullRequest
2 голосов
/ 27 марта 2012

Учитывая две таблицы APPLE и ORANGE,

NAME      APPLES
Alice     5
Bob       10
Trudy     1

NAME      ORANGES
Bob       50
Trudy     10
Dick      10

Как мне написать JOIN для отображения таблицы:

NAME      APPLES      ORANGES
Alice     5           -
Bob       10          50
Trudy     1           10
Dick      -           10

У меня в настоящее время

SELECT a.NAME, APPLES, ORANGES
FROM APPLE a
JOIN
ORANGE o ON o.NAME = a.NAME

но это только возвращает поля, которые имеют значение в APPLE и ORANGE.

Ответы [ 5 ]

5 голосов
/ 27 марта 2012
SELECT COALESCE(a.NAME, b.NAME) as NAME, APPLES, ORANGES 
FROM APPLE a 
FULL OUTER JOIN ORANGE o ON o.NAME = a.NAME 
4 голосов
/ 27 марта 2012
SELECT a.NAME, a.APPLES, o.ORANGES
FROM APPLE a
FULL OUTER JOIN
ORANGE o ON o.NAME = a.NAME
3 голосов
/ 27 марта 2012

должно быть:

SELECT COALESCE(a.NAME,o.name) as Name, APPLES, ORANGES 
FROM APPLE a 
FULL OUTER JOIN ORANGE o ON o.NAME = a.NAME 

Пример: http://sqlfiddle.com/#!4/1ae9a/4

1 голос
/ 27 марта 2012

Изменить JOIN на FULL OUTER JOIN.

0 голосов
/ 27 марта 2012

вы должны использовать левое правое внешнее объединение в зависимости от того, какая таблица содержит неполные данные

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