私が正しいと理解している場合は、2つの参照テーブルと1つのSELECT
withが必要JOIN
です。3つのテーブルのステートメントCREATE TABLE
は次のようになります
CREATE TABLE table1 (
data_column_1 int(10),
data_column_2 int(10),
data_column_3 int(10)
);
CREATE TABLE table2 (
data_column_2 int(10),
view_column_2 varchar(250)
);
CREATE TABLE table3 (
data_column_3 int,
view_column_3 varchar(250)
);
以下のサンプルデータがあると仮定しましょう
table 1
------------
10 1 3
20 2 2
30 3 1
table2
------------
1 Apple
2 Banana
3 Orange
table3
------------
1 Red
2 Green
3 Yellow
次に、これSELECT
はあなたが望むものを与えるでしょう
SELECT t1.data_column_1,
t1.data_column_2,
t1.data_column_3,
t2.view_column_2,
t3.view_column_3
FROM table1 t1 LEFT JOIN
table2 t2 ON t1.data_column_2 = t2.data_column_2 LEFT JOIN
table3 t3 ON t1.data_column_3 = t3.data_column_3
LEFT JOIN
data_column_2とdata_column_3のすべての値が、table2.view_column_2とtable3.view_column3にそれぞれ参照値があるわけではないと仮定して使用します。参照テーブルに常にそれぞれの値がある場合、またはそれらを持たない値を結果セットから除外する場合は、INNER JOIN
代わりに使用してください。
出力:
+---------------+---------------+---------------+---------------+---------------+
| data_column_1 | data_column_2 | data_column_3 | view_column_2 | view_column_3 |
+---------------+---------------+---------------+---------------+---------------+
| 10 | 1 | 3 | Apple | Yellow |
| 20 | 2 | 2 | Banana | Green |
| 30 | 3 | 1 | Orange | Red |
+---------------+---------------+---------------+---------------+---------------+
必要に応じて、ビューでまとめることができます
CREATE VIEW consolidated_table
AS
SELECT t1.data_column_1,
t1.data_column_2,
t1.data_column_3,
t2.view_column_2,
t3.view_column_3
FROM table1 t1 LEFT JOIN
table2 t2 ON t1.data_column_2 = t2.data_column_2 LEFT JOIN
table3 t3 ON t1.data_column_3 = t3.data_column_3
そして、このように使用します
SELECT *
FROM consolidated_table
WHERE data_column_1 < 20
出力:
+---------------+---------------+---------------+---------------+---------------+
| data_column_1 | data_column_2 | data_column_3 | view_column_2 | view_column_3 |
+---------------+---------------+---------------+---------------+---------------+
| 10 | 1 | 3 | Apple | Yellow |
+---------------+---------------+---------------+---------------+---------------+