C# 将子行显示为列

C# 将子行显示为列,c#,join,datagridview,C#,Join,Datagridview,我已经有很长时间没有认真研究关系数据库了,尽管我花了两个小时在互联网上搜索,并做了最好的猜测,但我还是无法计算出必要的SQL查询表达式 我有三个相关的表格: 玩家-包含玩家列表 Coach-包含Coach的列表 评估-以数字形式存储每个教练对每个球员的评估 因此,第三个表中的每条记录都包含一个字段,其中包含PlayerID、CoachID和评级 如果我有10名球员和3名教练,那么表3应该有30项记录 为了填充这些表,我想显示教练姓名(从教练表中提取),并将其显示为DataGridView中的列,

我已经有很长时间没有认真研究关系数据库了,尽管我花了两个小时在互联网上搜索,并做了最好的猜测,但我还是无法计算出必要的SQL查询表达式

我有三个相关的表格: 玩家-包含玩家列表 Coach-包含Coach的列表 评估-以数字形式存储每个教练对每个球员的评估

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

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

为了填充这些表,我想显示教练姓名(从教练表中提取),并将其显示为DataGridView中的列,该视图中每个球员都有一行,以便在教练列下的球员行中输入值时,get值与相应的球员和教练ID一起存储在表3中

我知道我今年在Microsoft Access中做过类似的事情,但我不知道如何在我的数据集中构建查询,以便将其绑定到DataGridView

我尝试使用以下SQL查询,但它不允许我编辑Coach1和Coach2列中的值。我怀疑这是因为我在球员名单和评估之间有一种一对多的关系,在教练和评估之间也有一对多的关系:

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
任何帮助都将不胜感激

应用程序详细信息:我正在Visual Studio Express中与C#一起使用SQL Server CE数据库

更多的阅读让我相信我想要的是一个SQL Server CE不支持的PIVOT函数


谢谢。

您可以创建新的数据行并动态添加列。然后将所有创建的行添加到DataGridView中。

这是与嵌套网格相关的层次数据

浏览此链接,详细解释如何在类似您的场景中使用gridview/datgrids


希望这能解决您的问题。

谢谢您的链接,我看过了,但它并不适用于我数据库中的关系类型。看看上面的编辑,它可能有助于解释我想要的输出。我的数据库结构可能不正确。再次阅读本文后,我确定嵌套网格不是我需要的,我需要的是SQL Server CE不支持的枢轴。