Объединение таблиц в 1 с флагом, указывающим соответствующие записи таблицы

#mysql #sql

#mysql #sql

Вопрос:

у меня есть 2 таблицы.

1.home_shop

  --- ------------ 
|id | product    |   
 --- ------------ 
| 1 | soap       | 
| 2 | cake       | 
| 3 | biscuit    | 
 --- ------------ 
  

2.office_shop

  --- ------------ 
|id | product    |   
 --- ------------ 
| 1 | key        | 
| 2 | lock       | 
| 3 | pen        | 
 --- ------------ 
  

я хочу объединить эти две таблицы в новую таблицу «complete_shop» с флагом, указывающим «home» и «office»
например:

  --- ------------ ------------- 
|id | product    |    flag     |
 --- ------------ ------------- 
| 1 | soap       | home        |
| 1 | key        | office      |
| 2 | cake       | home        |
| 2 | lock       | office      |
| 3 | biscuit    | home        |
| 3 | pen        | office      |
 --- ------------ ------------- 
  

как мне выполнить это объединение в mysql, пожалуйста, помогите мне. я новичок

Комментарии:

1. Зачем вам 2 разных магазина, если вы могли бы хранить все в одном магазине с флагом аутсорсинга. Таким образом, у вас было бы shop(id, product, flag) и shop_type(id, name) или для действительно хорошей нормализации вы могли бы сделать shop(id, product, shop_type) , shop_type(id, name) и product(id, name)

2. «для действительно хорошей нормализации» — что это значит? Они уже полностью нормализованы.

Ответ №1:

Выполните UNION запрос и введите flag столбец, используя соответствующие значения.

 SELECT id, product, 'home' AS flag
FROM home_shop
UNION ALL
SELECT id, product, 'office' AS flag
FROM office_shop
ORDER BY id, flag
  

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