Объединение таблиц с разными именами - PullRequest
0 голосов
/ 22 октября 2018

Как вы можете видеть ниже, я пытаюсь объединить две таблицы.Обе таблицы отображают свои данные немного по-разному, но не настолько, чтобы мы не могли к ним присоединиться.

Ради полноты таблицы будем называть по именам цветов:

Красная таблица будет red
Синяя таблица будет blue

Из обеих таблиц мы будем объединять ID s
Из таблицы red мы объединяем Name с blue таблицами Title
Из таблицы red,мы объединим Prod с blue таблицами Item
. Из таблицы red мы добавим Cost

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

enter image description here

Когда я пытаюсь сделать это, я получаю что-то вроде этого:

ID    Name    Prod    Cost    ID    Title    Item
0     asdf    item1   4.00    1     fdsa     item2
2     sdfg    item3   5.00    3     gfds     item4
4     dfgh    item5   4.00    5     hgfd     item6


Но я хотел бы получить это:

ID    Name    Item    Cost
0     asdf    item1   4.00
1     fdsa    item2
2     sdfg    item3   5.00
3     gfds    item4
4     dfgh    item5   4.00
5     hgfd    item6

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Использование должно использовать оператор UNION

SELECT column_name(s) FROM table1 
UNION 
SELECT column_name(s) FROM table2;

Правила:

Каждый оператор SELECT в UNION должен иметь одинаковое количество столбцов. Столбцы также должны иметь одинаковыетипы данных.Столбцы в каждой инструкции SELECT также должны быть в том же порядке

0 голосов
/ 22 октября 2018
select id, name, prod as item,cost from red_tbl UNION ALL select id, title as name, item, NULL as cost  from blue_tbl

Измените имя поля при выборе «prod» на «item» в красной таблице и «title» на «name» в синей таблице.Выберите пустое поле, которого нет в таблице (здесь поле стоимости в синей таблице), поскольку в объединенном номере выбранного поля должен быть один и тот же номер.

0 голосов
/ 22 октября 2018

Вы можете использовать UNION, чтобы объединить результаты нескольких запросов выбора.Поскольку вероятность дубликатов отсутствует, между этими несколькими запросами на выборку мы можем использовать Union All.Мы должны убедиться, что оба запроса на выборку возвращают одинаковое количество столбцов.В конечном итоге мы можем отсортировать объединенный результат по ID, используя ORDER BY:

(SELECT ID, 
       Name, 
       Prod AS Item, 
       Cost 
FROM red_table) 

UNION ALL 

(SELECT ID, 
       Title AS Name, 
       Item, 
       '' AS Cost
FROM blue_table) 

ORDER BY ID ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...