Так что то, что я вижу здесь, немного противоречиво, потому что возможности на самом деле не являются прямым атрибутом игр, за исключением косвенного. Но, возможно, это только я. Я бы лично предложил что-то более похожее на таблицу RunsScored и связал бы ее с какой-нибудь таблицей GamesHeader, поэтому подумайте:
CREATE TABLE GamesHeader (
GameID INT IDENTITY(1,1),
HomeTeamID INT, --FK to teams table, naturally
AwayTeamID INT, --FK to teams table, naturally
FinalInningsCount BYTE, -- for faster reporting after the game is over
FinalHomeScore BYTE, -- for faster reporting after the game is over
FinalAwayScore BYTE, -- for faster reporting after the game is over
--Other attribs
)
CREATE TABLE RunsScored (
RunsScoredID BIGINT IDENTITY(1,1), -- for faster reverse traversal, possibly. May not be needed, this depends on your setup, as the normalization will show a composite key anyways
PlayerID INT, --FK to players table naturally
GameID INT, --FK to GamesHeader table naturally
Inning BYTE, --wait for the payoff
RunsEarned, --because you may want to track this by the player ... really the problem is that there's not a single naturalized setup for this, so you may be intersecting this table to another stats table elsewhere. idk, it depends on your model. I'm going for fairly simplistic atm. Wanted to demonstrate something else entirely, but this needs to be accounted for.
-- other attribs
)
SELECT MAX(r.Inning) FROM RunsScored r JOIN GamesHeader g ON g.GameID = r.GameID WHERE GameID = 'x'
Это даст вам максимальный иннинг, сыгранный для конкретной игры, и вы можете дополнительно уточнить по PlayerID -> TeamID, чтобы выяснить больше деталей, если хотите. Что это может быть, я не уверен.
Я бы, вероятно, на самом деле уточнил бы, что вторая таблица должна быть не RunsScored, а чем-то вроде AtBat, потому что это действительно то, что вы отслеживаете. Я просто хотел показать, как можно денормализовать подачу вне игрового стола. Я бы настроил свою модель так, чтобы это было, если бы это был мой проект. НТН. YMMV.
Также обратите внимание, что я парень TSQL, но я думаю, что концепции, изложенные ниже, очень хорошо объясняют мою концепцию. Семантика языка, вероятно, не будет соответствовать.