我正在尝试获取尚未全额支付总费用的客人名单(仍有余额的客人)。
我想这样显示:
1231231(预订 ID)- John Doe(客人姓名)2013-11-17(到期日期)153.14(余额到期)
当然没有()。
我已经修补过,但仍然找不到令人满意的查询。
这是SQLFiddle的链接。
如果我没有提供足够的信息,请告诉我。
你在寻找这样的东西吗?
SELECT r.id,
CONCAT(g.fname, ' ', g.lname) guest_name,
r.arrival date_due,
r.total_price - COALESCE(p.payment_amt, 0) balance_due
FROM reservations r JOIN guests g
ON r.guest = g.id LEFT JOIN
(
SELECT reservation, SUM(payment_amt) payment_amt
FROM payments
GROUP BY reservation
) p
ON r.id = p.reservation
HAVING balance_due > 0
样本输出(基于提供的样本数据):
| 身份证 | GUEST_NAME | DATE_DUE | 余额_到期 | |---------|------------|-------------- --------|-------------| | 1000023 | 约翰·多伊 | 2013 年 11 月 9 日 00:00:00+0000 | 40.5 | | 1000022 | 约翰·多伊 | 2013 年 11 月 9 日 00:00:00+0000 | 40.5 | | 1000018 | 约翰·多伊 | 2013 年 11 月 1 日 00:00:00+0000 | 54 | | 1000019 | 约翰·多伊 | 2013 年 11 月 8 日 00:00:00+0000 | 54 | | 1000020 | 玛丽珍 | 2013 年 11 月 8 日 00:00:00+0000 | 54 | | 1000021 | 玛丽珍 | 2013 年 11 月 8 日 00:00:00+0000 | 54 |
这是SQLFiddle演示