Я изо всех сил пытаюсь найти логику для запроса JOIN с GROUP BY.
У меня есть 3 таблицы.
1. tbl_users
2. tbl_event_orders
3.tbl_event_signature ( For saving signatures on completed events)
tbl_users
id name skill
---------------------------
1 user1 A
2 user2 B
3 user3 A
4 user4 A
tbl_orders
id user_id item_id price
------------------------------------
1 1 1 100
2 2 1 100
3 3 1 100
4 4 1 100
tbl_signature
id item_id user_id signature
----------------------------------------------
1 1 1 xxxxxxxx...
1 1 3 NULL
1 1 4 xxxxxxxx...
Мне нужны подробности события из идентификатора элемента.Например, для предмета с идентификатором 1 мне нужен следующий результат:
skill total_count attended_users_count amount
A 3 2 300
B 1 0 100
skill - навык из таблицы пользователя.
total_count - общее количество заказов от этого частичного навыка.
Particip_users_count - общее количество заказов от этого частичного навыка + это должно иметь запись и значение NOT NULL в таблице tbl_signature.
сумма - сумма цены (total_count)
У меня есть следующий запрос для получения пользователей с навыками и общим количеством.
SELECT
U.skill as skill,
count(U.skill) as total_count,
sum( O.price ) as amount
FROM tbl_users U
INNER JOIN tbl_orders O
ON U.id = O.user_id
WHERE O.item_id = 1
GROUP BY U.skill
, но при работе сколичество посещенных пользователей, я получаю неожиданные результаты.Я пытался с помощью следующего запроса,
SELECT
U.skill as skill,
count(U.skill) as total_count,
count( S.signature ) as attended_users_count,
sum( O.price ) as amount
FROM tbl_users U
INNER JOIN tbl_orders O
ON U.id = O.user_id
LEFT JOIN tbl_signature S
ON O.item_id = S.item_id
WHERE O.item_id = 1
GROUP BY U.skill
Есть ли способ получить это в одном запросе?