0

リレーショナル データベースを本格的に扱うのは久しぶりで、過去 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 関数だと思います。

ありがとうございました。

4

2 に答える 2

0

これは、階層データとして、ネストされたグリッドに関連するものです

あなたのようなシナリオで gridview/datgrids を使用する方法を詳しく説明しているこのリンクを参照してください。

http://msdn.microsoft.com/en-us/magazine/cc164077.aspx

これで問題が解決することを願っています。

于 2012-09-07T09:24:27.137 に答える
0

新しい DataRows を作成し、列を動的に追加できます。次に、作成したすべての行を DataGridView に追加します。

于 2012-09-07T05:33:11.010 に答える