2
私は3つのテーブルを持っています。テーブル1,2と3を照会し、テーブル2とテーブル3のC1をそれぞれ選択して結果を得ます。これを得る方法はありますか? 3つのテーブルを結合して2つの行だけを得る
私は3つのテーブルを持っています。テーブル1,2と3を照会し、テーブル2とテーブル3のC1をそれぞれ選択して結果を得ます。これを得る方法はありますか? 3つのテーブルを結合して2つの行だけを得る
はい:
select t1.c1, coalesce(t2.c2, t3.c2) c2
from Table1 t1
left join Table2 t2 on t1.c1 = t2.c1
left join Table3 t3 on t1.c1 = t3.c1
次のことを試してみてください。
SELECT T1.C1, T2.C2
FROM T1
INNER JOIN T1.C1 = T2.C1
UNION ALL
SELECT T1.C1, T3.C2
FROM T1
INNER JOIN T1.C1 = T3.C1
表2のC1及び表3のC1でdublicatesがあるときにどうしますか?例えば。表2はエントリ「A、1」を有し、表3はエントリ「A、4」を有する。 – Martijn
@Martijn表2と表3は一意に異なる値を持っています – kinkajou
Mark Bannisterに答えがあります。この制約はSQLでは強制できません。データモデルを再考するのは良い考えです。 – Martijn