2012-09-07 36 views
0

我已经使用关系数据库进行了任何严肃的工作已经很长时间了,尽管花了最近两个小时搜索Internet并采取了我最好的猜测,但我无法制定必要的SQL查询表达式。将子行显示为列

我有三个相关的表: 玩家 - 包括球员 教练员名单 - 包含教练 评估名单 - 存储每个玩家多项每个教练的评价。

因此第三张表中的每条记录都包含一个带有玩家ID,教练ID和等级的字段。

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

为了填充这些表,我想说明的教练的名字(从教练表拉),并在的DataGridView具有用于每个玩家一排显示它们为列,所以当你输入一个值一个球员在教练专栏下的排,价值得分的存储在表3中与适当的球员和教练ID。

我知道我做的东西像今年的前在Microsoft Access,但我无法弄清楚如何在我的数据集构建查询,这样我可以把它绑定到的DataGridView

我尝试使用以下SQL查询,但它不让我编辑Coach1和Coach2列中的值。我怀疑这是因为我有PlayerList和评估以及教练和评估之间的一对多关系之间的一个一对多的关系:

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函数。

谢谢。

回答

0

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

0

这事关系到嵌套网格,作为分层数据

通过这个链接,在详细解释如何在你们这样的场景使用的GridView/datgrids。

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

希望这将解决您的问题。

+0

感谢您的链接,我看了一下,但它并不真正适用于我在我的数据库中的那种关系。看看上面的编辑,它可能有助于解释我想要的输出。我可能会错误地构建我的数据库。 –

+0

再次阅读文章后,我确定嵌套的网格不是我所需要的,我需要的是一个SQL-Server-CE不支持的PIVOT。 –