У меня есть база данных, которая содержит записи о статистике и записях спортивных команд, и у меня в настоящее время возникает проблема с выяснением того, как получить общие очки против команды над и включить его в запрос, который возвращает их полные победы и потери.Включение соединения с подзапросом в существующий запрос
Текущий запрос у меня есть, не показывать свои очки против является:
SELECT league_team_data.`Team Name` AS TeamName, league_team_data.TeamID, games.Result, count(*) AS Total, sum(case when games.`Result` = 'WIN' then 1 else 0 end) GamesWon, sum(case when games.`Result` = 'LOSS' then 1 else 0 end) GamesLost, sum(case when games.`Result` = 'WIN' then 2 when games.`Result` = 'TIE' then 1 else 0 end) Points, SUM(Score) PointsFor
FROM league_team_data
LEFT JOIN games
ON games.TeamID = league_team_data.TeamID
INNER JOIN teams_in_divisions
ON teams_in_divisions.DivisionID_FK = 2 AND games.TeamID = teams_in_divisions.TeamID_FK
GROUP BY TeamID
ORDER BY PointsFor DESC, Points DESC
«2» жёстко здесь оставаться жёстко, как это работает для его цели.
Запрос, который возвращает их общее количество очков против является:
SELECT SUM(Score) FROM `games` WHERE TeamID <> 1 AND
GameID IN (SELECT GameID FROM games WHERE TeamID = 1)
«1» зашиты здесь должно быть изменено, чтобы работать с league_team_data.TeamID из приведенного выше запроса.
Итак, мне нужно включить второй запрос в первый, чтобы добавить столбец «Очки против», что и возвращает второй запрос.
В таблице "игр есть эти данные (и больше, но это то, что имеет отношение к этому вопросу):
GameID | TeamID | Score |
1 3 20
1 5 28
Каждая строка статистика игры от игры для одной из команд, участвующих в игра, так что столбец «Оценка» - это то, что команды забивают. Итак, для того, чтобы получить очки против команды, мне нужно суммировать столбец «Оценка» для всех строк с GameID, в котором они играли, но не оценка из их строки, а их ряд противников. Второй запрос выполняет это.
Извините, если это действительно основной вопрос (я чувствую, что мне не хватает чего-то очевидного!), Но любая помощь будет очень оценена!
В соответствии с просьбой, здесь создают высказывания стола:
Таблица league_team_data:
CREATE TABLE `league_team_data` (
`TeamID` mediumint(10) NOT NULL AUTO_INCREMENT,
`Team Name` varchar(50) DEFAULT NULL,
`Team Name Short` varchar(50) DEFAULT NULL,
`Team Name Initials` varchar(10) DEFAULT NULL,
`Team Background Image` varchar(100) DEFAULT NULL,
`Team Logo` varchar(100) DEFAULT NULL,
PRIMARY KEY (`TeamID`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
Настольные игры:
CREATE TABLE `games` (
`Game Date` date NOT NULL,
`GameTime` time NOT NULL,
`GameID` mediumint(10) NOT NULL,
`TeamID` mediumint(10) NOT NULL,
`Team` varchar(50) NOT NULL,
`Score` int(5) NOT NULL,
`Result` varchar(5) NOT NULL,
`Home Team` varchar(50) NOT NULL,
`HomeTeamID` mediumint(10) NOT NULL,
`Away Team` varchar(50) NOT NULL,
`AwayTeamID` mediumint(10) NOT NULL,
`Game Status` varchar(10) NOT NULL,
`SeasonID` int(10) NOT NULL,
PRIMARY KEY (`GameID`,`TeamID`),
CONSTRAINT `FK_gameid` FOREIGN KEY (`GameID`) REFERENCES `league_games` (`GameID`) ON DELETE NO ACTION ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Таблица teams_in_divisions:
CREATE TABLE `teams_in_divisions` (
`DivisionID_FK` mediumint(10) NOT NULL,
`TeamID_FK` mediumint(10) NOT NULL,
UNIQUE KEY `DivisionID_TeamID` (`DivisionID_FK`,`TeamID_FK`),
KEY `TeamID_FK` (`TeamID_FK`),
CONSTRAINT `teams_in_divisions_ibfk_2` FOREIGN KEY (`TeamID_FK`) REFERENCES `league_team_data` (`TeamID`),
CONSTRAINT `teams_in_divisions_ibfk_1` FOREIGN KEY (`DivisionID_FK`) REFERENCES `league_divisions` (`DivisionID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Просьба представить несколько примеров вместе с инструкциями 'CREATE TABLE' ... – Benvorth
@Benni Вы хотите создать таблицу для таблицы« игр »или всех таблиц? Я не уверен, что вы хотите для образцов, но я был бы рад предоставить все, что поможет, если вы сможете уточнить, что вы имеете в виду. –
@JonEvans Вы можете отредактировать свой вопрос!Кстати, не лучше ли хранить результат (т. Е. Оценка) прибора, а не выиграть и т. Д.? – Strawberry