2017-05-10 38 views
0

我在MySQL中有3個表,結構如下。從一個表到另一個表的MySQL數據

表1:藥物

字段: med_id med_name

示例數據:

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

表2:交易

字段:tr_id,tr_medicine,tr_city

樣本數據:

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 

我想要做的是,在一個查詢(子可以使用查詢),來自「交易」表的現成數據並將其插入「摘要」表中,但是應該插入藥物名稱,藥物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設置爲一個(SELECT MAX(sm_id)+1 FROM summary)增加它,這是沒有必要:

+0

到目前爲止您嘗試過哪些代碼? – dat3450

回答

1

爲此,可以使用INSERT INTO table SELECT from other table和嵌套選擇的幫助下做該列。

第二個嵌套選擇(SELECT med_id FROM medicines WHERE med_name = transactions.tr_medicnie)它模擬了表格藥物和交易之間的聯接,您在每次交易中獲得藥物標識並插入摘要。

相關問題