Можно ли использовать объединения для создания таблицы, включающей отсутствующие значения? - PullRequest
0 голосов
/ 07 августа 2020

Я хочу объединить несколько таблиц, сохраняя при этом нулевые значения, в которых значение не было найдено. Например, если у меня хранятся еженедельные результаты игроков, я хочу создать таблицу на основе всех игроков в текущем событии, независимо от того, участвовали ли они в предыдущих событиях.

Я пробовал несколько вариантов присоединения , но не нашел ничего, что работает.

EventRoster

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

LastWeek

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

TwoWeeksA go

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

Ожидаемый результат:

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

Я могу только представить, что создание ожидаемого результата возможно, но, вероятно, я использую неправильный подход. Есть какие-нибудь рекомендации, как это сделать?

1 Ответ

1 голос
/ 07 августа 2020

Как заметил Ларну, немного необычно иметь стол на каждую неделю. Если вы собираетесь хранить эту базу данных на неопределенный срок, вам следует обновить свой дизайн.

При этом следующее возвращает именно то, что вы просили.

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

Посмотрите, как он работает в этой скрипке.

...