У меня есть 4 таблицы act, up, pos_act, pos_up В этом примере предположим, что у меня есть столбцы идентификатора клиента и количества как
act.cust_id, up.cust_id, act.amount, up.amount pos_up .cID, pos_act.cID, pos_up.amount_, pos_act.amount_
act
| cust_id | amount |
|:-------:|:------:|
| 6789 | 30.00 |
| 9876 | 25.00 |
pos_act
| cID | amount_|
|:-------:|:------:|
| 6789 | 30.00 |
| 9876 | 24.99 |
----------------------------------------
up
| cust_id | amount |
|:-------:|:------:|
| 1234 | 10.00 |
| 2345 | 75.00 |
pos_up
| cID | amount_|
|:-------:|:------:|
| 1234 | 9.99 |
| 2345 | 75.00 |
Теперь С этим я хочу сравнить, где суммы не совпадают все в одной таблице.
Итак, в этом примере 2345 совпадений в действии 1234 не совпадает.
Тогда результаты должны быть
All Unmatched
| cust_id | Table |
|:-------:|:------:|
| 9876 | Act |
| 1234 | Up |
Я пробовал с союзами, но, похоже, не могу заставить это работать
SELECT *
FROM (
select cID, amount FROM act as a
union select cID, amount FROM up as b
) as v
LEFT JOIN
(select CID, amount_ FROM pos_up as c
UNION select CID, amount_ from pos_act as d
) as r
WHERE a.amount != d.amount_
Я также пробовал с левыми соединениями, но он просто показывает мне все результаты. Мне нужны только несовпадающие. custid - это уникальный идентификатор, который может появляться несколько раз.