履歴テーブルからデータを取得するための SQL クエリの作成を手伝ってもらえますか?
私はコーディング経験が 1 週間しかない初心者です。これまで単純な SELECT ステートメントを試してきましたが、つまずきにぶつかりました。
私のフットボール クラブのデータベースには 3 つのテーブルがあります。最初のものは、ボールをプレーヤーにリンクします。
BallDetail
| BallID | PlayerID | TeamID |
|-------------------|--------|
| 1 | 11 | 21 |
| 2 | 12 | 22 |
2 つ目は、ボールに起こることを示しています。
BallEventHistory
| BallID | Event | EventDate |
|--------|------ |------------|
| 1 | Pass | 2012-01-01 |
| 1 | Shoot | 2012-02-01 |
| 1 | Miss | 2012-03-01 |
| 2 | Pass | 2012-01-01 |
| 2 | Shoot | 2012-02-01 |
3 つ目は履歴変更表です。ボールの持ち主が変わった後、履歴が記録されます。
HistoryChanges
| BallID | ColumnName | ValueOld | ValueNew |
|--------|------------|----------|----------|
| 2 | PlayerID | 11 | 12 |
| 2 | TeamID | 21 | 22 |
ボールが他のプレーヤーに渡される前に、プレーヤー 11 がすべてのボールに対して行ったすべてのパスとシュートをリストする表を取得しようとしています。このような:
| PlayerID | BallID | Event | Month |
|----------|--------|-------|-------|
| 11 | 1 | Pass | Jan |
| 11 | 1 | Shoot | Feb |
| 11 | 2 | Pass | Jan |
私はそう始めます:
SELECT PlayerID, BallID, Event, DateName(month, EventDate)
FROM BallDetail bd INNER JOIN BallEventHistory beh ON bd.BallID = beh.BallID
WHERE PlayerID = 11 AND Event IN (Pass, Shoot) ...
しかし、現在別のプレイヤーと一緒にいるにもかかわらず、ボール 2 も確実に含まれるようにするにはどうすればよいでしょうか?