2017-01-16 36 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提交给返回我们想要的结果集的数据库。在你的情况下,我们想要加入这两个表,我们可以在你的id_customer字段上使用INNER JOIN来做到这一点,这是两个表之间的共同点。如果您想持久保留这些结果,我们可以将其转化为自己的表格。它看起来像

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 
相关问题