Получить сумму двух объединенных таблиц, в которых уникальные данные могут находиться в обеих таблицах. - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть две таблицы, в которых после объединения мне нужна объединенная сумма, где данные могут присутствовать в одной таблице, но не в другой.

Таблицы

| username | commission | status      | username | commission | status
__________________________________    __________________________________
| userA    | 3          | pending     | userA    | 1          | pending
| userA    | 2          | pending     | userA    | 1          | pending
| userB    | 3          | pending     | userC    | 3          | pending
| userB    | 2          | pending     | userD    | 2          | pending
| userC    | 1          | pending     | userD    | 2          | pending
| userC    | 1          | pending     | userD    | 2          | pending

Выше приведены примеры двух таблиц. Я пытаюсь получить следующие результаты.

| username | commission | status   
_________________________________
| userA    | 7          | pending
| userB    | 5          | pending
| userC    | 5          | pending
| userD    | 6          | pending

Проблема в том, что userB не имеет соответствующего столбца в таблице 2, а userD не имеет соответствующего столбца в таблице 1, поэтому я не могу выполнить стандартное INNER JOIN для имени пользователя как LEFT исключит userD, а RIGHT исключит userB.

Какой тип JOIN мне следует использовать и, возможно, пример?

1 Ответ

1 голос
/ 04 февраля 2020

В MySQL вы можете использовать union all и агрегацию:

select username, sum(commission) commission, status
from (
    select username, comission, status from table1 t1
    union all 
    select username, comission, status from table2 t2
) t
group by username, status
...