sql—是否可以使用联接创建包含缺失值的表?

laximzn5  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(301)

我希望连接多个表,同时在找不到值的情况下保持空值。例如,如果我存储了每周的玩家分数,我想基于当前事件中的所有玩家创建表,而不管他们是否在以前的事件中。
我尝试了许多连接变体,但没有找到任何有效的方法。
事件花名册

Player     Salary
------     ------
P1         10000
P2         20000
P3          5000

上周

Player     Position
------     --------
P1         3
P2         5
P4         6

两周前

Player     Position
------     --------
P1         20
P3         15
P4         2

预期产量:

Player     Salary     LastWeekPos     TwoWeeksAgoPos
-----      ------     ----------      --------------
P1         10000      3               20
P2         20000      5               -
P3          5000      -               15

我只能想象构建预期的输出是可行的,但我可能采取了错误的方法。有没有关于如何着手这件事的指导?

xriantvc

xriantvc1#

正如拉努指出的,每周都有一张table是有点不寻常的。如果你打算无限期地保留这个数据库,你应该更新你的设计。
也就是说,下面返回的正是您所要求的。

select rst.Player,  rst.Salary, wk1.position LastWeekPos, wk2.position  TwoWeeksAgoPos
from EventRoster rst
 left join LastWeek wk1
   on wk1.player = rst.player
 left join TwoWeeksAgo wk2
   on wk2.player = rst.player

看看这把小提琴是怎么用的。

相关问题