0

データベースのビューを再構築しようとしています。これは、構築中のホッケー統計アプリケーション用です。

私の状況は次のとおりです。私はプレーを記録するためのデータを記録しています。それぞれIndividualScoreHockeyTeamIdと がありGameIdます。このデータを使用してMatchFixtureテーブルに移動し、 を使用しGameIdて、ゲームでプレーしている 2 つのチームを特定できます。

したがって、私の見解では、AllScoringPlaysというタイトルのコラムを作成したいと考えていOpponentIdます。したがって、 fromを使用してテーブルをクエリし、またはがfromと等しくなく、 (ISH)が(MF)と等しい場所を比較する必要があると思いますTeamIdGoalMatchFixtureTeamIdIndividualScoreHockeyHomeTeamIdAwayTeamIdTeamIdIndividualScoreHockeyGameIdId

これを実行するサブクエリを作成する方法がわかりません。次のようなものになると思います。

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 | 離れたチーム ID | 日にち

IndividualScoreHockey:

ID | チーム ID | ゲーム ID | ゴール | P_アシスト | S_アシスト | 時間

( GoalP_Assist、およびS_Assist列は、その得点プレーに起因するプレーヤーの ID です)

私はビューに本当に慣れていないので、このサブクエリを実行する場所がわかりません。または、結合で逃げることができるかもしれませんが、わかりません。どんな助けでも大歓迎です。ここで何かをつぶした場合は、お気軽にコメントしてください。より適切に説明できるように努めます。

4

1 に答える 1

1

私があなたのクエリの正しさを理解していれば、 として、またはすでに として参加しているレコードで、必要な を見つけるOpponentIdことHomeTeamIdができAwayTeamIdます。次に、選択したフィールドのリストにこれを追加するだけで、必要な結果を取得できます。MatchFixtureMF

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