2016-05-02 5 views
1

の列を参照する利用値(文字列)は、私は2つのテーブルを持っている別のテーブル

id name field serial# 
1 A1 xx 123 
2 A1 yy 123 
3 A1 zz 123 
4 A2 xx 124 
5 A2 yy 124 
6 A2 zz 124 

T2:

serial# xx yy zz 
123  0 1 1 
124  1 0 1 

私はそのようなクエリを作成します結果テーブルは次のようになります。

id name field serial# 
1 A1 yy 123 
2 A1 zz 123 
3 A2 xx 124 
4 A2 zz 124 

次のようなクエリを作成しようとしました:

select * from T1, T2 
from ... 
where T2.(T1.field) <> 0 <-- This is where I never get the syntax right 
... 

答えて

0

SQLiteは動的に列をアクセスすることはできません。

SELECT ... 
FROM T1 
JOIN T2 ON T1.serial = T2.serial 
     AND ((T1.field = 'xx' AND T2.xx) OR 
      (T1.field = 'yy' AND T2.yy) OR 
      (T1.field = 'zz' AND T2.zz)) 
... 

を別の方法として、CASE expressionと同じアルゴリズムを:あなたは、手動で各1をチェックする必要が

SELECT ... 
FROM T1 
JOIN T2 ON T1.serial = T2.serial 
     AND CASE T1.field 
      WHEN 'xx' THEN T2.xx 
      WHEN 'yy' THEN T2.yy 
      WHEN 'zz' THEN T2.zz 
      END 
... 
関連する問題