0

我正在尝试为我的数据库重建一个视图,这是我正在构建的曲棍球统计应用程序。

我的情况是这样的:我正在记录得分的数据,每个IndividualScoreHockey都有一个 TeamIdGameId。有了这些数据,我可以把它拿到MatchFixture桌子上,用GameId来确定哪两支球队正在比赛中。

因此,在我对 的看法中AllScoringPlays,我想创建一个标题为的专栏OpponentId,它会告诉我反对TeamId的团队的成员Goal。所以我相信我需要使用from查询MatchFixture表并比较在哪里or不等于from和(ISH) 等于(MF)TeamIdIndividualScoreHockeyHomeTeamIdAwayTeamIdTeamIdIndividualScoreHockeyGameIdId

我不确定如何创建一个执行此操作的子查询,我相信它会类似于以下内容:

SELECT (HomeTeamId OR AwayTeamId) AS OpponentId FROM MatchFixture WHERE Id = foo AND (HomeTeamId != bar OR AwayTeamId != bar)

现在,我的观点是这样的:

CREATE VIEW `AllScoringPlays` AS
SELECT 
    `ISH`.`GameId` AS `GameId`,
    `ISH`.`TeamId` AS `TeamId`,
    `MF`.`SeasonId` AS `SeasonId`,
    `ISH`.`Goal` AS `GoalId`,
    `ISH`.`P_Assist` AS `P_AssistId`,
    `ISH`.`S_Assist` AS `S_AssistId`,
    `ISH`.`Time` AS `Time`,
FROM
    (((((`IndividualScoreHockey` `ISH`
    join `User` `UG` ON ((`ISH`.`Goal` = `UG`.`Id`)))
    join `Team` `T` ON ((`T`.`Id` = `ISH`.`TeamId`)))
    join `MatchFixture` `MF` ON ((`ISH`.`GameId` = `MF`.`Id`)))
    left join `User` `UPA` ON ((`ISH`.`P_Assist` = `UPA`.`Id`)))
    left join `User` `USA` ON ((`ISH`.`S_Assist` = `USA`.`Id`)))
ORDER BY `ISH`.`Period` , `ISH`.`Time`

这是我必须使用的数据的粗略图

MatchFixture

身份证 | 季节 ID | 联赛ID | 主队ID | 客队ID | 日期

IndividualScoreHockey

身份证 | 团队 ID | 游戏ID | 目标 | P_Assist | S_辅助 | 时间

GoalP_AssistS_Assistcolumns 是归因于该得分游戏的玩家的 ID)

我对视图真的很陌生,所以我不确定在哪里执行这个子查询。或者也许我可以加入,我不确定。任何帮助将非常感激。如果我在这里屠杀了任何东西,请随时发表评论,我可以尝试更好地解释它。

4

1 回答 1

1

如果我理解您的查询正确,您可以在您已经加入的记录中找到OpponentId您想要的 asHomeTeamId或as 。然后,您只需将其添加到您选择的字段列表中即可获得您想要的结果:AwayTeamIdMatchFixtureMF

CASE WHEN MF.HomeTeamId = ISH.TeamId THEN MF.AwayTeamId ELSE MF.HomeTeamId
END AS OpponentId
于 2013-04-15T22:02:42.710 回答