Получение SQL группового запроса из нескольких таблиц - PullRequest
0 голосов
/ 19 февраля 2020

Я занимаюсь разработкой простой игры-викторины, и у меня возникают трудности при создании запроса SQL (SQL Server 2016). У меня есть следующие связанные таблицы:

[Авторы]
ID
Имя

[Викторины]
ID
AuthorID (указывает на ID в [Авторы])

[QuizGames]
ID
QuizID (указывает на идентификатор в [Quizzes])

[GamesPlayed]
ID
QuizGameID (указывает на ID в [QuizGames])

[Игроки]
ID
GamePlayedID (указывает на ID в [GamesPlayed) ])
DatePlayed

Учитывая идентификатор автора (в первой таблице) Мне нужно получить общее количество игроков (последняя таблица) для всех его игр, сыгранных за последние 6 месяцы. Например, мне нужна хранимая процедура / запрос, который возвращает меня:

Feb2020  Jan2020   Dec2019   Nov2019   Oct 2019   Sep2019
1404      2512      6521      1421      2150       1120

В основном мне нужно получить идентификатор автора из первой таблицы, а затем найти все тесты, которые он создал во второй таблицы, затем найдите все игры (в 3-й таблице), созданные с помощью его викторин, затем найдите все игры (в 4-й таблице), сыгранные с его играми, а затем найдите игроков (в последней таблице, сгруппированной по последние 6 месяцев) которые играли в его игры.

Как мне этого добиться?

1 Ответ

0 голосов
/ 19 февраля 2020
SELECT p.DatePlayed, COUNT(p.Id)
FROM [Player] p
JOIN [GamesPlayed] gp on gp.Id = p.GamePlayedId
JOIN [QuizGames] qg on qg.Id = gp.QuizGameId
JOIN [Quizzes] q on q.Id = qg.QuizId
JOIN [Author] a on a.Id = q.AuthorId
WHERE p.DatePlayed >= DATEADD(M, DATEDIFF(M, 0,DATEADD(M, -6, GETUTCDATE())), 0)
GROUP BY p.DatePlayed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...