2016-12-27 5 views
0

У меня есть таблица T1, которую я хочу разбить на две таблицы, T2 и T3. Таблица T2 содержит идентификатор и различные имена из T1. Я хочу вставить данные в T3, который имеет идентификатор поля, который является внешним ключом для id в T2. Теперь, когда я беру данные для T3 из T1, он дает мне имя, но я хочу, чтобы столбец имел соответствующий идентификатор от T2.Ссылка через внешний ключ из другой таблицы

например. 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 с объединением на Т1 и Т2, как это:

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