#mysql #sql
#mysql #sql
Вопрос:
У меня есть две таблицы, где поле 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:
Вместо внутреннего объединения попробуйте «полное внешнее объединение» — это вернет совпадение, если оно существует, или просто запись из A или B, если ее нет в другой.
Комментарии:
1. Спасибо, вы направили меня в правильном направлении, поскольку MySQL не поддерживает полные внешние соединения, мне пришлось выполнить левое внешнее соединение — объединение — правое внешнее соединение. Теперь я понимаю, почему вы ответили, что кто-то отредактировал дополнительный тег для меня как «sql». Моим единственным исходным тегом был Mysql