私はメジャーリーグのような構造のSQLデータベースを持っています。それにはアメリカリーグとナショナルリーグがあり、チームには勝敗記録があり、選手を含むチームが含まれている。SQL:ネクタイを破る
マイリーグテーブルには、| league_name | league_id(プライマリキー)|ワイルドカード|
ワイルドカードは、その部門をリードしていない部門の中で最善のチームである外部キーのteamIDです。ここで
(勝利/損失記録が保管されている場合)、私は私のZ_TEAMSテーブルを更新するときにワイルドカードを更新するために、私のトリガーです:
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))
それは通常Z_TEAMSが更新されるたびにうまく機能し、正しいチームを選びます。ただし、Z_TEAMSを更新して2つのチームが同じレコードを持ち、両方がワイルドカードの候補になるようにしようとすると、トリガーは複数の行を返し、更新を制限します。
私の質問は:どのように私はこのネクタイを壊すことができますか?私は、ワイルドカードの場所に両方のチームを表示するか、任意にピッキングするか、アルファベット順にピッキングするのにはオープンです。私はかなり新しいSQLですし、これを理解することはできません。
これはMySQLの質問ではありません。どのようなアルゴリズムを開発すべきかということです。あなたまたはあなたのユーザーが合理的であると考えるタイ・ブレーカーを開発することができます。結ばれた2つのチームを見て、どちらが最善の記録を取っているかを判断することができます。もしそれがネクタイであれば、ほとんどのチームがシーズン中に走ります。そして、これは続けることができます。米国憲法を見て、選挙大学の関係をどのように扱うかを見てください。ある種のタイ・ブレーカー・アルゴリズムが必要です。それはあなた次第です。 – mba12