2017-01-16 5 views
0

私は店舗データベースを持っており、2つのテーブルを一緒に結合したいと思っています。1つの列に基づいて別の表に列を追加する方法はありますか?

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のすべての列を既に追加したいものを除き、id_customerに基づくordersテーブルに追加したいと思います。テーブルを結合した後、次のようになります解決策を検索する場合

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

私は INNER JOINキーワードを見つけましたが、私はそれを私が望むように使用するかどうかはわかりません。

答えて

1

"テーブルに列を追加"しません。代わりに、私たちが望む結果セットを返すSQLをデータベースに送信します。あなたの場合、我々は2つのテーブルを結合したいと我々は2つのテーブルの間で共通のid_customerフィールドのINNER JOINを使用してそれを行うことができます。その結果を永久に保持したい場合は、それを独自のテーブルにすることができます。

あなたのニーズに合わせて、これらのテーブルの結合から返されるフィールドのリストを微調整することができます。

1

id_shopとid_shop_groupが両方のテーブルにあるという事実は、それらが複合キーの一部であることを示しています。一意の行を保証するには、3つの共有列すべてを使用して結合する必要があります。それ以外の場合は、顧客が複数のショップに所属する重複した注文行を取得することができます。

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 
関連する問題