2017-05-10 21 views
0

私はMySQLで3つのテーブルを持っています。一つのテーブルから他のテーブルへのMySQLデータ

表1:薬

フィールド:

med_id | med_name 
1  | Panadol 
2  | Tylenol 
3  | Brufen 

表2:トランザクション

フィールド:tr_id、tr_medicine、tr_city

は med_name

サンプルデータをmed_id

サンプルデータ:

tr_id | tr_medicine | tr_city 
1  | Panadol | London 
2  | Tylenol | Milan 
3  | Brufen | New York 

表3:要約

フィールド:SM_ID、sm_medicine

サンプルデータ:私は何をしたいか

sm_id | sm_medicine 
1  | 1 
2  | 2 
3  | 3 

は1クエリ(サブでは、クエリを使用することができます)、 'トランザクション'テーブルからデータを準備して 'サマリー'テーブルに挿入します。代わりに、薬名、薬IDを挿入する必要があります。医学IDは「薬品」テーブルから取り出すことができます。

INSERT INTO summary (sm_id, sm_medicine) 
SELECT (SELECT MAX(sm_id)+1 FROM summary), 
     (SELECT med_id FROM medicines WHERE med_name = transactions.tr_medicnie) 
FROM transactions; 

まずあなたが要約で最大のIDを取得し、AUTO_INCREMENTに設定されている場合1 (SELECT MAX(sm_id)+1 FROM summary)で、これは必要ありません、それを増やす:

+0

これまでにどのようなコードを試しましたか? – dat3450

答えて

1

あなたはこのINSERT INTO table SELECT from other tableを使用して、ネストされた選択の助けを借りて行うことができます列。

2番目の入れ子選択(SELECT med_id FROM medicines WHERE med_name = transactions.tr_medicnie)は、それぞれの取引で医薬品IDを取得したテーブル医薬品とトランザクションの結合を模倣し、要約で挿入します。

関連する問題