2017-01-16 3 views
0

У меня есть база данных моего магазина, и я хочу объединить две таблицы.Как добавить столбцы в другую таблицу на основе одного столбца?

id_order | reference | id_shop_group | id_shop | id_carrier | id_lang | id_customer | id_cart 

Это заголовок строки моего orders таблицы и ниже заголовок customers таблицы.

id_customer | id_shop_group | id_shop | id_gender | firstname | lastname 

То, что я хочу сделать, это присоединиться к ним на основе id_customer колонки. В частности, я хочу добавить все столбцы customers, за исключением тех, которые уже есть до orders таблицы на основе id_customer. После соединения таблиц должны выглядеть следующим образом:

id_order|reference|id_shop_group|id_shop|id_carrier|id_lang|id_customer|id_cart|id_gender|firstname|lastname 

При поиске решения я нашел INNER JOIN ключевое слово, но я не уверен, как использовать его так, как я хочу.

ответ

1

Мы не добавляем столбцы к таблице. Вместо этого мы отправляем SQL в базу данных, которая возвращает нужный набор результатов. В вашем случае мы хотим присоединиться к двум таблицам, и мы можем сделать это, используя INNER JOIN на вашем поле id_customer, которое является общим для двух таблиц. Мы можем превратить это в свою собственную таблицу, если вы хотите постоянно удерживать эти результаты. Это будет выглядеть примерно так

SELECT 
    orders.id_order, 
    orders.reference, 
    orders.id_shop_group, 
    orders.id_shop, 
    orders.id_carrier, 
    orders.id_lang, 
    orders.id_customer, 
    orders.id_cart, 
    customer.id_gender, 
    customer.firstname, 
    customer.lastname 
FROM orders INNER JOIN customer on orders.id_customer = customer.id_customer; 

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

1

Тот факт, что id_shop и id_shop_group находятся в обеих таблицах, предполагает, что они являются составной частью составного ключа. Возможно, вам понадобится присоединиться к использованию всех трех разделяемых столбцов, чтобы гарантировать уникальные строки. В противном случае вы можете получить повторяющиеся строки заказов, где клиент принадлежит нескольким магазинам.

например.

SELECT 
... 
FROM orders INNER JOIN customer on orders.id_customer = customer.id_customer 
and orders.id_shop_group = customer.id_shop_group 
and orders.id_shop = customer.id_shop 
Смежные вопросы