2017-01-16 69 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 
相關問題