объединить / объединить две колонки в 1 (т-sql) - PullRequest
0 голосов
/ 07 января 2019

У меня есть 2 таблицы: batters и pitchers

хочу потянуть

playerid(nvarchar50), firstname(nvarchar50), lastname(nvarchar50), bats(nvarchar50)

из таблицы batters

и

playerid(nvarchar50), firstname(nvarchar50), lastname(nvarchar50), throws(nvarchar50)

из таблицы pitchers

Я хочу объединить вывод так, чтобы когда я получал результаты, он получился следующим образом

playerid, firstname, lastname, throws, bats

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

летучая мышь стол

playerID    nameFirst   nameLast    bats
----------------------------------------
abreubo01   Bobby       Abreu       L
abreujo02   Jose        Abreu       R
abreuto01   Tony        Abreu       B
ackledu01   Dustin      Ackley      L
adamecr01   Cristhian   Adames      S
adamsla01   Lane        Adams       R
adamsma01   Matt        Adams       L

яма стол

playerid    nameFirst   nameLast    throws
------------------------------------------
abadfe01    Fernando    Abad        L
aceveal01   Alfredo     Aceves      R
achteaj01   A.J.        Achter      R
adamsau01   Austin      Adams       R
adamsmi03   Mike        Adams       R
adcocna01   Nathan      Adcock      R
affelje01   Jeremy      Affeldt     L

Желаемый результат

яма стол

playerid    nameFirst   nameLast    throws  Bats
------------------------------------------------
abadfe01    Fernando    Abad              
aceveal01   Alfredo     Aceves              
achteaj01   A.J.        Achter             
adamsau01   Austin      Adams       
adamsmi03   Mike        Adams      
adcocna01   Nathan      Adcock     
affelje01   Jeremy      Affeldt     

1 Ответ

0 голосов
/ 08 января 2019

Предположения:

1) Вы просто хотите получить список всех игроков без каких-либо ограничений

2) Один и тот же идентификатор игрока никогда не появляется в обеих таблицах (или, если это так, вам все равно, указаны ли они дважды)

Исходя из этих предположений, вы можете просто написать:

SELECT playerID, nameFirst, nameLast, bats, NULL as throws
FROM bats
UNION ALL
SELECT playerID, nameFirst, nameLast, NULL as bats, throws
FROM pits

Однако я думаю, что ваши данные не полностью нормализованы. Обе эти таблицы на самом деле являются списками игроков, лишь с небольшим изменением их атрибутов. Таким образом, более разумным общим подходом было бы просто иметь одну таблицу «игроков» со следующими столбцами:

playerID, nameFirst, nameLast, bats, throws

Летучие мыши и броски могут быть обнулены, если игрок не выполняет это действие. При необходимости вы можете добавить дополнительный столбец «player_type» для обозначения их роли (жидкое тесто, кувшин или оба, если это разрешено).

Как только вы получите эту структуру, запрос будет тривиальным:

SELECT playerID, nameFirst, nameLast, bats, throws
FROM players
...