MYSQL, PHP как посчитать?

Есть таблица zayavki с полями id user_id status text
Есть таблица user c полями id name

status в таблице zayavki имеет числовое значение 1, 2, 3

Необходимо посчитать отдельно для каждого пользователя все заявки с определенным статусом и вывести на страницу через php

Вывод должен быть такой:
name status1 status2 status2
Вася 10 3 6
Федя 3 6 0
Митя 10 3 6
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
@mletov
SELECT user.name,
	     t1.cnt AS status1,
	     t2.cnt AS status2,
	     t3.cnt AS status3
FROM user
LEFT JOIN
(
	SELECT user_id,
	       COUNT(status) AS cnt
	FROM zayavki
	WHERE status=1
	GROUP BY user_id
) AS t1
ON user.id = t1.user_id
LEFT JOIN
(
	SELECT user_id,
	       COUNT(status) AS cnt
	FROM zayavki
	WHERE status=2
	GROUP BY user_id
) AS t2
ON user.id = t2.user_id	
LEFT JOIN
(
	SELECT user_id,
	       COUNT(status) AS cnt
	FROM zayavki
	WHERE status=3
	GROUP BY user_id
) AS t3
ON user.id = t3.user_id
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
select u.name, count(z1.*) status1, count(z2.*) status2, count(31.*) status3
from user u
left join zayavki z1 ON z1.user_id = u.id AND status=1
left join zayavki z2 ON z2.user_id = u.id AND status=2
left join zayavki z3 ON z3.user_id = u.id AND status=3
group by u.id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы