我已经使用关系数据库进行了任何严肃的工作已经很长时间了,尽管花了最近两个小时搜索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函数。
谢谢。
感谢您的链接,我看了一下,但它并不真正适用于我在我的数据库中的那种关系。看看上面的编辑,它可能有助于解释我想要的输出。我可能会错误地构建我的数据库。 –
再次阅读文章后,我确定嵌套的网格不是我所需要的,我需要的是一个SQL-Server-CE不支持的PIVOT。 –