У меня есть 4 таблицы, ниже. Мне нужно получить количество contact_made_id
из таблицы contact_made
для записей, где 'status_loan_id' = 33 или 43
Я мог бы сделать это с помощью подзапроса, однако мне нужно и получить счетчик в результате запроса, и порядок по счетчику в присоединенном запросе
- кредиты
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