自从我对关系数据库做任何认真的工作以来已经很长时间了,尽管在过去的两个小时里搜索了互联网并做出了最好的猜测,但我还是无法计算出必要的 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 函数。
谢谢你。