показывает запись, если сумма не оплачена или не полностью оплачена - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь выполнить следующий запрос, чтобы получить данные

Таблицы содержат

1 сведения о счете для хранения сведений о счете

bill_details(bill_no,invoice_no,invoice_date,total,cid)

информация об оплаченных счетах для хранения оплаченной суммы по счетам может содержать ноль или более записей для оплаты счетов

 bill_paid_details(id,bill_no,amount,payment_mode)

информация о клиенте

customer_mapping(id,fname,lname,cid)

Я хочу показать записи, если сумма не оплачена или не полностью оплачена.

Если сумма не оплачена, значит, нет записи в bill_paid_details

Я пытается выполнить следующий запрос.

select bd.invoice_no,bd.invoice_no, bd.total,sum(bpd.amount), cm.fname
from bill_details as bd
left join customer_mapping as cm
on bd.cid=cm.cid
left join bill_paid_details as bpd
on bpd.bill_no=bd.bill_no
group by bd.invoice_no
HAVING bd.total>sum(bpd.amount)
order by bd.invoice_dt

Этот запрос выполняется, но не показывает никаких записей.

1 Ответ

0 голосов
/ 22 марта 2020

Вы можете попробовать запрос ниже -

SELECT BD.invoice_dt
      ,BD.invoice_no
      ,BD.total
      ,BPD.AMT
      ,C.FNAME
FROM `bill_details` BD
LEFT JOIN (SELECT bill_no, SUM(AMOUNT) AMT
           FROM `bill_paid_details`
           GROUP BY bill_no) BPD ON BD.bill_no = BPD.bill_no
JOIN client C ON C.id = BD.cid
WHERE BD.total <> BPD.AMT
OR BPD.bill_no IS NULL
ORDER BY invoice_dt;

Демо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...