2012-05-13 19 views
2

私は、次の表があります。挿入ルックアップ値は

Table A: 
id int 
v1 string 
v2 string 

Table B: 
key int 
val string 

Table A_v2: 
id int 
v1 int 
v2 int 

を、私は、テーブルAとBにロードされたデータを持って、私は列に(各値を置き換えることで、テーブルA_v2にテーブルAを変換しようとしていますv1およびv2)を表Bの対応するキーと置き換えます。

これは意味があると思います。そうでない場合、私は例を挙げることができます。
私はSQLiteを使用しています。

私はどのように挿入物を書くでしょうか? |
1:

行で:ここでEDIT

は一例ですabc | def

Bの行:
5 | abc 42 | def

A_v2の行は、次のようになります。
1 | 5 | 42

+0

私はいくつかの例を挙げてください。 実際にはテーブルAの対応する列と混同してテーブルBをキー入力します。 –

+0

@pratikgarg – baruch

答えて

1

私が理解しているように、TABLE_Bの列VALの値でTABLE_AのV1とV2の列を置き換えたいとします。

ので、あなたが次のクエリを使用することができるかどう

..

create table table_a_v2 as 
     select * from table_a where 1>1; 

と、このテーブルに挿入する -

insert into table_a_v2 
select a.id, 
     (select key from table_b whare val= a.v1) v1, 
     (select key from table_b whare val= a.v2) v2 
from table_a 

私はsqliteのについてはあまりわからないです..しかし、このコマンドOracleデータベースごとに有効であり、動作しています。

+0

例を追加しました。私は明日、私がオフィスに戻ったときにそれを試してみるでしょう。 – baruch

0

個人的に、私はwhere句に参加し、私は次のように使用し続けることを好む:

insert into A_v2(id, v1, v2) 
    select a.id, bv1.key, bv2.key 
    from a left outer join 
     b bv1 
     on a.v1 = bv1.val left outer join 
     b bv2 
     on a.v2 = bv2.val 

は、あなたの「B」表中の「キー」の複数の値に注意してください。この場合、そのような値は複数の行を返します。

「挿入」とは別に「選択」クエリを実行して、結果を検証できます。