Quindi quello che vedo qui è un po 'contraddittorio perché gli inning non sono in realtà direttamente un attributo dei giochi, tranne indirettamente. Ma forse sono solo io. Personalmente suggerirei qualcosa di più simile a una tabella RunsScored, e vorrei riportarlo a una tabella GamesHeader, di qualche tipo, quindi considera:
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'
Questo ti darà il massimo Inning giocato per un determinato gioco e puoi perfezionarlo con PlayerID -> TeamID per scoprire ulteriori dettagli se lo desideri. Quali potrebbero essere quelli non sono sicuro.
Probabilmente rifinirei la seconda tabella in modo che non sia RunsScored ma qualcosa su AtBat perché è proprio quello che stai monitorando. Volevo solo mostrare come potresti denormalizzare l'inning lontano dal tavolo da gioco. Modificherei il mio modello per fluire così, se questo fosse il mio progetto. HTH. YMMV.
Nota anche che sono un tipo TSQL, ma penso che i concetti espressi di seguito funzionino abbastanza bene per spiegare il mio concetto. La semantica della lingua probabilmente non si allinea.