0

自从我对关系数据库做任何认真的工作以来已经很长时间了,尽管在过去的两个小时里搜索了互联网并做出了最好的猜测,但我还是无法计算出必要的 SQL 查询表达式。

我有三个相关的表: Players - 包含球员列表 Coaches - 包含教练列表 Evaluations - 将每个教练对每个球员的评价存储为一个数字。

因此,第三个表中的每条记录都包含一个包含 PlayerID、CoachID 和评分的字段。

如果我有 10 名球员和 3 名教练,那么表 3 中应该有 30 条记录。

为了填充这些表,我想显示教练姓名(从教练表中提取)并将它们显示为DataGridView中的列,每个球员都有一个行,这样当你在教练下的球员行中输入一个值时列中,获取的值与适当的球员和教练 ID 一起存储在表 3 中。

我知道我今年以前在 Microsoft Access 中做过类似的事情,但我不知道如何在我的Dataset中构建 Query以便将其绑定到DataGridView

我尝试使用以下 SQL 查询,但它不允许我编辑 Coach1 和 Coach2 列中的值。我怀疑这是因为我在 PlayerList 和 Evaluations 之间有一对多的关系,在 Coaches 和 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 回答