我想要显示所有payment_type 信用付款.然而,我只看到一个,我的total专栏肯定是不对的.我一定是搞砸了,JOINs但我不知道怎么解决它们.我尝试了不同的组合LEFTs RIGHTs等,并且不断出现.
我应该看到Tammy和Terry.总数目前是正确的.
另外,我在这里查询:
SELECT p.conf,
Concat(g.fname, ' ', g.lname) AS guest,
u.unit_name,
p.card_type,
p.payment_amt,
Sum(p.payment_amt) AS total
FROM payments p,
guests g,
units u,
reservations r
WHERE p.reservation = r.id
AND r.guest = g.id
AND r.unit = u.id
AND p.payment_date = '2013-11-01'
AND p.payment_type = 'credit'
Run Code Online (Sandbox Code Playgroud)
那么你可以使用子查询来做到这一点:
SELECT p.conf,
Concat(g.fname, ' ', g.lname) AS guest,
u.unit_name,
p.card_type,
p.payment_amt,
( SELECT SUM(payment_amt)
FROM payments
WHERE payment_date = p.payment_date
AND payment_type = p.payment_type) AS total
FROM payments p
LEFT JOIN reservations r ON p.reservation = r.id
LEFT JOIN guests g ON r.guest = g.id
LEFT JOIN units u ON r.unit = u.id
WHERE p.payment_date = '2013-11-01'
AND p.payment_type = 'credit'
Run Code Online (Sandbox Code Playgroud)
或者你可以计算之后的总数,并将UNION计算到结果的其余部分:
UNION ALL
SELECT NULL, 'Total', NULL, NULL, SUM(payment_amt)
FROM payments
WHERE payment_date = '2013-11-01'
AND payment_type = 'credit'
Run Code Online (Sandbox Code Playgroud)
小提琴上的完整SQL
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |