如何基于一列将列添加到另一个表?

时间:2017-01-16 14:28:50

标签: mysql sql database

我有自己的商店数据库,我想一起加入两张桌子。

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的{​​{1}}表已经存在的列除外。加入表后应如下所示:

id_customer

在搜索解决方案时,我找到了id_order|reference|id_shop_group|id_shop|id_carrier|id_lang|id_customer|id_cart|id_gender|firstname|lastname 个关键字,但我不确定如何以我想要的方式使用它。

2 个答案:

答案 0 :(得分:1)

我们没有"添加列到表格#34;。相反,我们将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 :(得分:1)

id_shop和id_shop_group在两个表中的事实表明它们是复合键的一部分。您可能需要使用所有三个共享列进行连接以保证唯一行。否则,您可以检索客户属于多个商店的重复订单行。

e.g。

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