Внутреннее соединение один ко многим - PullRequest
0 голосов
/ 17 апреля 2019

Итак, моя проблема. У меня есть оплата за стол и плата за стол, поэтому у одного платежа много платежей, а у одного платежа один платеж. Мне нужно выбрать все платежи, где сумма всех платежей за один платеж! = Все расходы за один платеж.

Пример кода

select payment_account, payment_agreement, payment_pay, payment_charge
from payment join
     charge
     on payment_id = charge_payment_id
where charge_summ != payment_charge
group by payment_id;

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Структура таблицы будет полезна в любом случае, попробуйте этот запрос:

select payment_account, payment_agreement, payment_pay, payment_charge
from payment join
(select charge_payment_id, sum(payment_charge) as totally from charge group by 
charge_payment_id) A 
on payment_id = charge_payment_id and payment_charge != totally;

Здесь вы сначала суммируете расходы и сравниваете их с результатами.

0 голосов
/ 17 апреля 2019

Возможно, вы можете сделать это без объединения, просто с помощью дополнительного выбора, чтобы получить сумму payment_charge и сравнить ее с charge_summ каждого платежа:

select payment_account, payment_agreement, payment_pay, payment_charge
from payment 
where payment.charge_summ <> (select sum(payment_charge)
                        from charge 
                        where payment.payment_id = charge_payment_id)

EDIT Вы можете сделать это с JOIN и без внутреннего выбора:

select payment_id,payment_account, payment_agreement, payment_pay, charge_summ,sum(payment_charge) 
from payment join
     charge
     on payment_id = charge_payment_id
group by payment_id,payment_account, payment_agreement, payment_pay,charge_summ
having charge_summ <> sum(payment_charge)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...