Was ich hier sehe, ist also ein wenig widersprüchlich, weil Innings nicht wirklich direkt ein Attribut von Spielen sind, außer indirekt. Aber vielleicht bin das nur ich. Ich würde persönlich eher so etwas wie eine RunsScored-Tabelle vorschlagen und sie auf irgendeine Art mit einer GamesHeader-Tabelle verknüpfen.
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'
Das gibt dir das maximale Inning, das für ein bestimmtes Spiel gespielt wird, und du kannst es mit PlayerID -> TeamID weiter verfeinern, um mehr Details herauszufinden, wenn du möchtest. Was das sein könnte, weiß ich nicht.
Ich würde diese zweite Tabelle wahrscheinlich tatsächlich so verfeinern, dass sie nicht mit RunsScored bewertet wird, sondern mit AtBat, denn genau das verfolgen Sie. Ich wollte nur zeigen, wie man das Inning vom Spieltisch weg denormalisieren kann. Ich würde mein Modell so anpassen, dass es so läuft, wäre dies mein Projekt. HTH. YMMV.
Beachten Sie auch, dass ich ein TSQL-Typ bin, aber ich denke, dass die unten aufgeführten Konzepte recht gut funktionieren, um mein Konzept zu erklären. Die Sprachsemantik wird wahrscheinlich nicht anstehen.