2016-12-27 22 views
0

我有一個表T1,我想分成兩個表T2和T3。表T2包含一個id和來自T1的不同名稱。我想插入數據到T3中,它有一個字段id,它是T2中id的外鍵。現在,當我從T1獲取T3的數據時,它給了我一個名字,但我希望列中有來自T2的相應ID。通過從不同表中的外鍵引用

例如T2是

  1 | John 
      2 | Jack 
      3 | Jasper 

現在從T1到T3的紀錄是

101 | +9038302873 | John | 200 
102 | +9023757583 | Jack | 500 

現在我在上表中,而不是約翰想要1和2,而不是傑克。

回答

1

鑑於這些表...

SQL> select * from t1; 

     ID PHONE    NAME   SALARY 
---------- -------------------- ---------- ---------- 
     101 +9038302873   John    200 
     102 +9023757583   Jack    500 

SQL> select * from t2: 

    NAME_ID NAME 
---------- ---------- 
     1 John 
     2 Jack 
     3 Jasper 

SQL> select * from t3; 

no rows selected 

SQL> 

...我們可以填寫T3與T1和T2的聯接是這樣的:

SQL> insert into t3 
    2  (id, phone, name_id, salary) 
    3 select t1.id 
    4   , t1.phone 
    5   , t2.name_id 
    6   , t1.salary 
    7 from t1 
    8  join t2 
    9   on t1.name = t2.name 
10/

2 rows created. 

SQL> select * from t3; 

     ID PHONE     NAME_ID  SALARY 
---------- -------------------- ---------- ---------- 
     101 +9038302873     1  200 
     102 +9023757583     2  500 

SQL> 

注意:您沒有說明你的表格,以便我有即興創作的專欄名稱。您將需要編輯INSERT語句以適合您的模式。

+0

謝謝..它解決了我的問題 – Akshay

+0

嘿..你能幫我嗎? http://stackoverflow.com/questions/41541100/fetch-table-name-from-a-column-for-from-clause – Akshay

相關問題