【发布时间】:2022-01-23 17:33:03
【问题描述】:
我正在查询的数据库中有三个表:
玩家
| Player_id | Player_Name |
|---|---|
| 1 | Tom |
| 2 | Dick |
| 3 | Harry |
游戏
| Game_id | Game_Name |
|---|---|
| 1 | Tennis |
| 2 | Rugby |
| 3 | Cricket |
Games_Players
| game_id | player_id | Date_Played |
|---|---|---|
| 1 | 2 | 2021-12-20 |
| 1 | 3 | 2021-12-20 |
| 2 | 3 | 2021-12-21 |
| 3 | 2 | 2021-12-22 |
| 3 | 3 | 2021-12-22 |
我想要一个返回玩家 ID、姓名、游戏名称和玩过的日期的查询。如果他们没有玩过游戏——比如 Tom (1) 和 Dick (2)——那么我想要 id、玩家名、游戏名和一个空值。
想要的结果
| player_id | player_name | game_name | Date_Played |
|---|---|---|---|
| 1 | Tom | Tennis | null |
| 1 | Tom | Rugby | null |
| 1 | Tom | Cricket | null |
| 2 | Dick | Tennis | 2021-12-20 |
| 2 | Dick | Rugby | null |
| 2 | Dick | Cricket | 2021-12-22 |
| 3 | Harry | Tennis | 2021-12-20 |
| 3 | Harry | Rugby | 2021-12-21 |
| 3 | Harry | Cricket | 2021-12-22 |
我尝试了以下查询,这是我能得到的最接近的查询,并且我尝试了其他联接,但我似乎无法获得所需的所有数据:
SELECT players.player_id, players.player_name, games.game_name, Games_Players.Date_Played,
FROM players
LEFT OUTER JOIN Games_Players
LEFT OUTER JOIN games
ON players.player_id = Games_Players.player_id
AND Games_Players.game_id=games.game_id
它没有返回我需要的所有记录。
【问题讨论】:
标签: sql sql-server