Сложная выборка данных из БД SQL Server
У меня есть большая база данных. Она локальная поэтому я не могу скрины принести. Итак
В базе есть таблица Users Поля id, name
Таблица Clients Поля id, user_id, name
Таблица Sessions Поля id, client_id, description
Таблица SessionMeta поля id, user_id, session_id, status
Все таблицы связаны соответствующими ключами
Короче мне нужно посчитать сколько у каждого Пользователя по каждому из его Клиентов всего Сессий и Сессий со статусом = 2 из SessionMeta таблицы.
Это не лень, я просто реально запутался и у меня взрывается голова. Я пытался делать через Inner JOIN но с SQL не на проф уровне работаю.
Подскажите пожалуйста как сформировать такой сложный запрос. Какие команды использовать и в каком порядке. Большое спасибо.
Ответы (1 шт):
Первый вопрос так решается:
SELECT
u.id,
u.name,
c.id,
c.name,
COUNT(s.id) AS SessionCount
FROM Users u
INNER JOIN Clients c ON c.user_id = u.id
INNER JOIN Sessions s ON s.client_id = c.id
GROUP BY u.id, u.name, c.id, c.name
Второй так:
SELECT
u.id,
u.name,
c.id,
c.name,
COUNT(s.id) AS SessionCount
FROM Users u
INNER JOIN Clients c ON c.user_id = u.id
INNER JOIN Sessions s ON s.client_id = c.id
INNER JOIN SessionMeta sm ON sm.session_id = s.id AND sm.status = 2
GROUP BY u.id, u.name, c.id, c.name