У меня есть следующие таблицы:
Users - Users of the site
Matchups - Matchups between two teams
Periods - The periods in which matchups take place
MatchupResults - The results of the matchups
UserPicks - The user's choice of who will win the matchup (5 picks for each period)
Teams - Teams in the matchups
Отношения следующие:
Matchups.HomeID/Matchups.VisitorID = Teams.ID
Matchups.PeriodID = Periods.ID
MatchupResults.MatchupID = Matchups.ID
UserPicks.MatchupID = Matchups.ID
UserPicks.UserID = User.ID
Что я пытаюсь получить (на английском языке):
Все пользователи, независимо от того, сделали ли они пики и все матчи, независимо от того, есть ли у них результаты.Если у них есть результаты или выборки, я хочу, чтобы они были показаны.
Я получил этот запрос, чтобы получить мне совпадения, как я хочу их:
select P.ID as PeriodID,
M.ID as MatchupID,
V.ID as VisitorTeam,
H.ID as HomeTeam,
MR.VisitorScore,
MR.HomeScore,
CASE WHEN (M.PointSpread <= 0) THEN
CASE WHEN (MR.HomeScore + M.PointSpread > MR.VisitorScore) THEN H.ID ELSE V.ID END
WHEN (M.PointSpread > 0) THEN
CASE WHEN (MR.HomeScore + M.PointSpread < MR.VisitorScore) THEN V.ID ELSE H.ID END
ELSE NULL
END AS TeamThatCoveredSpread
from Matchups M
left outer join MatchupResults MR ON MR.MatchupID = M.ID
inner join Teams V ON V.ID = M.VisitorID
inner join Teams H ON H.ID = M.HomeID
inner join Periods P ON P.ID = M.PeriodID
Однако у меня возникают проблемы, включаяпользователи и их выбор - независимо от того, что я пытаюсь, они фильтруют мои результаты только по играм, которые выбрали пользователи.
Так что, если есть 10 пользователей , и я выбираю 1 matchup, я должен видеть всех 10 пользователей и либо TeamID в качестве их выбора, либо NULL , что означает, что они не сделали выбор для этой игры.
ОБНОВЛЕНИЕ: Пример результатов для вышеуказанного запроса с периодом 1, указанным для простоты:
