Выбор и объединение из двух разных таблиц на основе нескольких динамических значений, которые могут присутствовать или отсутствовать в другой таблице

#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