はMYTABLE内の各エントリのための2つのテーブルのいずれかの値を対応付けるための提案です。私。これは、mytableがセカンダリテーブルを選択するための単一のエントリを含むだけではないことを前提としています。 この意味の詳細については、この回答の最後にある「MCVE」を参照してください。
メインテーブルの1つのエントリに基づいて2つのセカンダリテーブルを切り替える場合は、この回答の最後を参照してください。
詳細:
- ハードコード「値1」/「値2」カラム1は、偽造colummn1、ここで二次ジョインキー、仮定によって接合二次テーブル
- からの結果にオンザフライで追加として
union all
id
が
セレクト(偽COLUMN1含む)二次テーブルの両方から単一のテーブルを作る*(ID、列1)を使用して を入力してください。
出力(MCVEは、以下に提供するために、TABLE1から "AF"、 "AZ" 表2から):
value1|1|a
value2|2|B
value1|3|c
value1|4|d
value2|5|E
value2|6|F
MCVE:
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE mytable (column1 varchar(10), id int);
INSERT INTO mytable VALUES('value1',1);
INSERT INTO mytable VALUES('value2',2);
INSERT INTO mytable VALUES('value1',3);
INSERT INTO mytable VALUES('value1',4);
INSERT INTO mytable VALUES('value2',5);
INSERT INTO mytable VALUES('value2',6);
CREATE TABLE table2 (value varchar(2), id int);
INSERT INTO table2 VALUES('F',6);
INSERT INTO table2 VALUES('E',5);
INSERT INTO table2 VALUES('D',4);
INSERT INTO table2 VALUES('C',3);
INSERT INTO table2 VALUES('B',2);
INSERT INTO table2 VALUES('A',1);
CREATE TABLE table1 (value varchar(2), id int);
INSERT INTO table1 VALUES('a',1);
INSERT INTO table1 VALUES('b',2);
INSERT INTO table1 VALUES('c',3);
INSERT INTO table1 VALUES('d',4);
INSERT INTO table1 VALUES('e',5);
INSERT INTO table1 VALUES('f',6);
COMMIT;
2つのテーブル間で選択するために単一に基づきますメインテーブルのエントリ(この場合は "mytable2":
select * from table1 where (select column1 from mytable2) = 'value1'
union all
select * from table2 where (select column1 from mytable2) = 'value2';
()mytable2のみ 'VALUE1' を含むと出力:
a|1
b|2
c|3
d|4
e|5
f|6
あなたが望むものをより明確に説明してください。あなたはテーブルを持っていて、クエリを書く方法を知らないのですか?または、テーブルを設計して、簡単に問い合わせることができますか? –
あなたの質問は意味をなさない。 'myTable'とは何ですか?サンプルデータと望ましい結果が役立ちます。 –
これには動的SQLが必要です。 –