SqlFiddle
非常に基本的ですが、それでも関係を見ることができます。ここに。
構造
テーブル
プレイヤー
--------------------------
|Id | Name | OtherInfo |
--------------------------
| 1 | John | Player Info |
--------------------------
| 2 | Tom | Player Info |
--------------------------
季節
-----------------------------------
|Id | SeasonName | SeasonInfo |
-----------------------------------
|01 | MyFirstSeason | Season Info |
-----------------------------------
トーナメント
------------------------------------
| Id | SeasonId | TournamentName |
------------------------------------
|001 | 01 | MyFirstTournament|
------------------------------------
出会い
---------------------------------------
| Id | FirstPlayerId | SecondPlayerId |
---------------------------------------
| A | 1 | 2 |
---------------------------------------
マッチ
-----------------------------------------------
| Id | TournamentId | EncounterId | MatchInfo |
-----------------------------------------------
|0001| 001 | A | Some Info |
-----------------------------------------------
問題は、多くのキーを無料で使用していることです。一歩下がってデザインについて考える必要があります。いくつかの列を取り出したことは知っていますが、それは単なる例のためです。それらをどこに戻すかを理解していると確信しています。これらのテーブル間の関係を示したかっただけです。
クエリ
基本的な情報だけが必要であることを暗示しましょう (もう一度例として)
Select m.Id,
t.TournamentName,
s.SeasonName,
(SELECT pl.Name FROM Players pl
JOIN Encounters en ON pl.Id = en.FirstPlayerId
WHERE pl.Id = en.FirstPlayerId) AS [FirstPlayerName],
(SELECT pl.Name FROM Players pl
JOIN Encounters en ON pl.Id = en.SecondPlayerId
WHERE pl.Id = en.SecondPlayerId) As [SecondPlayerName],
m.MatchInfo
FROM Matchs m
JOIN Tournaments t ON m.TournamentId = t.Id
JOIN Encounters e ON m.EncounterId = e.Id
JOIN Seasons s ON t.SeasonId = s.Id