Ich habe eine SQL-Datenbank wie Major League Baseball strukturiert. Es hat eine American League und eine National League, die Divisionen enthalten, die Teams enthalten, die Gewinn/Verlust-Datensätze haben und Spieler enthalten.SQL: eine Krawatte zu brechen
Meine Ligatabelle hat: | league_name | league_id (Primärschlüssel) | Wildcard |
Wo Wildcard ist ein Fremdschlüssel TeamID, die die beste Mannschaft in einer Division ist, die diese Division nicht führt.
Hier ist meine Trigger Wild Card zu aktualisieren, wenn ich meine Z_TEAMS Tabelle aktualisieren (wo die Gewinn/Verlust-Aufzeichnungen gehalten werden):
UPDATE Z_LEAGUES
SET `Z_LEAGUES`.`Wild Card` = (SELECT teamID
FROM Z_TEAMS
WHERE (teamWins/teamLoss) =
(SELECT MAX(teamWins/teamLoss) FROM Z_TEAMS,
Z_DIVISIONS WHERE Z_TEAMS.divID =
Z_DIVISIONS.divID AND Z_DIVISIONS.leagueID =
Z_LEAGUES.leagueID AND Z_TEAMS.teamID != Z_DIVISIONS.divLeader))
Es funktioniert in der Regel gut und nimmt das richtige Team Z_TEAMS jedes Mal aktualisiert wird, . Wenn ich jedoch versuche, Z_TEAMS zu aktualisieren, sodass zwei Teams denselben Datensatz haben und beide Kandidaten für Joker sind, gibt der Trigger mehr als eine Zeile zurück und beschränkt die Aktualisierung.
Meine Frage ist: Wie kann ich diese Krawatte brechen? Ich bin offen für die Anzeige beider Teams in der Wild Card, oder willkürliche Auswahl oder alphabetische Reihenfolge. Ich bin ziemlich neu in SQL und kann das nicht herausfinden.
Dies ist nicht so sehr eine MySQL-Frage, sondern vielmehr, welche Art von Algorithmus Sie entwickeln sollten. Sie können jeden Tieferbrecher entwickeln, den Sie oder Ihre Benutzer für angemessen halten. Du kannst dir die beiden Teams anschauen und herausfinden, welche die beste Bilanz hat. Und wenn dies zu einem Gleichstand führt, läuft das Team mit den meisten Läufen für die Saison, und so weiter und weiter. Sehen Sie sich die Verfassung der Vereinigten Staaten an und sehen Sie, wie die Beziehungen im Wahlkollegium gehandhabt werden. Sie brauchen eine Art Tie Breaker Algorithmus und was das ist, liegt an Ihnen. – mba12