MySQL считается как столбец - PullRequest
3 голосов
/ 03 июня 2019

У меня есть следующая структура таблицы

leads
-id
-fname
-lname


subcontractors
-id
-leads_id
-fname
-lname
-status

У потенциальных клиентов может быть много subcontractors.subcontractors.status сообщает, является ли субподрядчик активным или приостановленным

Вопрос в том, как выбрать отряды со столбцом подсчета, и показывает, сколько активных и приостановленных субконсонов у них есть?

У меня есть это правосейчас:

SELECT 
l.id, 
l.fname, 
l.lname, 
s.status 
FROM leads l 
INNER JOIN subcontractors s 
ON l.id = s.leads_id 
GROUP BY l.id ORDER BY l.id DESC;

Моя цель - сделать что-то подобное

id | fname | lname | active_subcon_count | suspended_subcon_count 

1 Ответ

4 голосов
/ 03 июня 2019

Вы можете попробовать использовать агрегатную функцию условия COUNT с CASE WHEN

SELECT 
    l.id, 
    l.fname, 
    l.lname, 
    COUNT(CASE WHEN s.status = 'active' THEN 1 END) ,
    COUNT(CASE WHEN s.status = 'suspended' THEN 1 END) 
from leads l 
INNER JOIN subcontractors s 
ON l.id = s.leads_id 
GROUP BY l.id , l.fname, l.lname
ORDER BY l.id DESC;

или mysql может сделать SUM следующим образом.

SELECT 
    l.id, 
    l.fname, 
    l.lname, 
    SUM(s.status = 'active') active_subcon_count ,
    SUM(s.status = 'suspended') suspended_subcon_count 
from leads l 
INNER JOIN subcontractors s 
ON l.id = s.leads_id 
GROUP BY l.id , l.fname, l.lname
ORDER BY l.id DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...