【发布时间】:2019-01-27 01:22:06
【问题描述】:
我有 4 张桌子,如下所示。对于 'status_loan_id' = 33 或 43 的记录,我需要从 contact_made 表中获取 contact_made_id 的计数
我可以使用子查询来做到这一点,但是我需要同时获取查询结果中的计数和按计数排序在连接查询中
- 贷款
loan_id | Client_id
---------------------
9727 | 12668
9780 | 12720
9781 | 12721
9782 | 12722
9783 | 12723
9784 | 12724
9785 | 12725
- 客户
Client_id
---------------------
12668
12720
12721
12722
12723
12724
12725
- clients_coms
client_coms_id | client_id
-----------------------------
2114 | 12668
2115 | 12668
2116 | 12668
2117 | 12668
2121 | 12668
2122 | 12668
2260 | 12720
2261 | 12720
2262 | 12720
2263 | 12721
2264 | 12721
2265 | 12721
2266 | 12722
2267 | 12722
2268 | 12723
2269 | 12723
2270 | 12723
2271 | 12723
2272 | 12724
2273 | 12724
2274 | 12724
2275 | 12724
2276 | 12725
2277 | 12725
2278 | 12725
- contact_made
contact_made_id | loan_id | status_loan_id
1 | 9727 | 3
2 | 9727 | 3
3 | 9727 | 34
4 | 9727 | 33
5 | 9727 | 3
6 | 9727 | 33
9 | 9727 | 3
0 | 9727 | 3
11 | 9782 | 33
12 | 9782 | 3
13 | 9782 | 33
14 | 9782 | 3
15 | 9782 | 34
我有下面的 SQL,但是它给出了以下不正确的输出
SELECT
l.loan_id,
COUNT(cm.contact_made_id) AS contact_count
FROM loans l
LEFT JOIN contact_made cm
ON l.loan_id = cm.loan_id
AND (cm.status_loan_id = 33 OR cm.status_loan_id = 34)
LEFT JOIN clients_coms com
ON l.client_id = com.client_id
GROUP BY l.loan_id
ORDER BY contact_count ASC
输出...
loan_id | contact_count
------------------------
9780 | 0
9781 | 0
9783 | 0
9784 | 0
9785 | 0
9782 | 6
9727 | 18
应该输出...
loan_id | contact_count
------------------------
9780 | 0
9781 | 0
9783 | 0
9784 | 0
9785 | 0
9782 | 2
9727 | 3
【问题讨论】: