リレーショナル データベースを本格的に扱うのは久しぶりで、過去 2 時間インターネットを検索して最善の推測を行ったにもかかわらず、必要な SQL クエリ式を見つけることができませんでした。
関連する 3 つのテーブルがあります: Players - プレーヤーのリストが含まれます Coaches - コーチのリストが含まれます Evaluations - 各プレーヤーに対する各コーチの評価を数値として格納します。
したがって、3 番目のテーブルの各レコードには、PlayerID、CoachID、および評価のフィールドが含まれます。
10 人の選手と 3 人のコーチがいる場合、テーブル 3 には 30 のレコードが必要です。
これらのテーブルにデータを入力するために、コーチの名前 (Coaches テーブルから取得) を表示し、各プレーヤーの行を持つDataGridViewの列として表示して、コーチの下のプレーヤーの行に値を入力すると、列の値は、適切なプレーヤー ID とコーチ ID と共に表 3 に格納されます。
Microsoft Accessで今年のようなことをしたことは知っていますが、 DataGridViewにバインドできるようにDatasetに Query を作成する方法がわかりません。
次の SQL クエリを使用してみましたが、Coach1 列と Coach2 列の値を編集できません。これは、PlayerList と Evaluations の間に一対多の関係があり、Coach と Evaluations の間に一対多の関係があるためだと思います。
SELECT PlayerList.Number, PlayerList.Name, PlayerList.Year, PlayerList.Height, PlayerList.Notes, PlayerList.AverageSkill, AVG(Evaluations.Skill) AS CoachSkill,
'SELECT Skill FROM Evaluations
WHERE (PlayerID = PlayerList.Number) AND (CoachID = 1)' AS Coach1,
'SELECT Skill FROM Evaluations
WHERE (PlayerID = PlayerList.Number) AND (CoachID = 2)' AS Coach2
FROM Evaluations RIGHT OUTER JOIN
PlayerList ON Evaluations.PlayerID = PlayerList.Number
GROUP BY PlayerList.Number, PlayerList.Name, PlayerList.Year, PlayerList.Height, PlayerList.Notes, PlayerList.AverageSkill
どんな助けでも大歓迎です。
アプリケーションの詳細: SQL-Server-CE データベースを使用して、Visual Studio Express で C# を使用しています。
もう少し読んでみると、私が欲しいのは SQL-Server-CE がサポートしていない PIVOT 関数だと思います。
ありがとうございました。