Выберите и объедините две разные таблицы на основе нескольких динамических значений, которые могут присутствовать или не присутствовать в другой таблице. - PullRequest
0 голосов
/ 11 марта 2019

У меня есть две таблицы, где поле ID может совпадать или не совпадать, я хочу объединить две таблицы. Моя лучшая попытка не возвращает пропущенное значение.

SELECT * 
FROM ( 
SELECT matricula,SUM(monto) as 'pagosTotales' FROM referenciasdepago WHERE matricula IN('PM0000','PM0001') GROUP BY matricula
) AS A
INNER JOIN (
SELECT matricula, SUM(anual) as 'importeTotal' FROM documentos WHERE matricula IN ('PM0000','PM0001') GROUP BY matricula
) AS B ON A.matricula=B.matricula;

После "WHERE matricula IN" может фактически содержаться более 50 различных значений.

Это мой нежелательный результат:

+-----------+--------------+-----------+--------------+
| matricula | pagosTotales | matricula | importeTotal |
+-----------+--------------+-----------+--------------+
| PM0000    |         1485 | PM0000    |        16030 |
+-----------+--------------+-----------+--------------+

Это еще один нежелательный результат:

+-----------+--------------+-----------+--------------+
| matricula | pagosTotales | matricula | importeTotal |
+-----------+--------------+-----------+--------------+
| PM0000    |         1485 | PM0000    |        16030 |
| PM0000    |         1485 | PM0001    |           50 |
+-----------+--------------+-----------+--------------+

Поскольку отсутствует PM0001, где он существует в таблице A.

1 Ответ

1 голос
/ 11 марта 2019

Вместо внутреннего соединения попробуйте «полное внешнее соединение» - оно вернет совпадение, если оно существует, или просто запись из A или B, если его нет в другом.

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