【发布时间】:2012-08-31 23:22:33
【问题描述】:
我已经很久没有对关系数据库进行任何认真的工作了,尽管过去两个小时在互联网上搜索并做出了最好的猜测,但我还是无法计算出必要的 SQL 查询表达式。
我有三个相关的表: 玩家 - 包含玩家列表 教练 - 包含教练列表 评估 - 将每位教练对每位球员的评估存储为一个数字。
因此,第三个表中的每条记录都包含一个包含 PlayerID、CoachID 和评分的字段。
如果我有 10 名球员和 3 名教练,那么表 3 中应该有 30 条记录。
为了填充这些表,我想显示教练姓名(从教练表中提取)并将它们显示为 DataGridView 中的列,每个球员都有一个行,这样当你在教练列下的球员行中输入一个值,该值与相应的球员和教练 ID 一起存储在表 3 中。
我知道我今年以前在 Microsoft Access 中做过类似的事情,但我不知道如何在我的 Dataset 中构建查询,以便我可以将其绑定到 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 函数。
谢谢。
【问题讨论】:
标签: c# join datagridview