4つのテーブルと答え - 7つのテーブルにそれを拡張することはかなり簡単にする必要があります。
Oracleのセットアップ:
CREATE TABLE t1 (city, name) AS
SELECT 'a', 'a' FROM DUAL UNION ALL
SELECT 'a', 'b' FROM DUAL;
CREATE TABLE t2 (city, name) AS
SELECT 'a', 'a' FROM DUAL UNION ALL
SELECT 'a', 'c' FROM DUAL;
CREATE TABLE t3 (city, name) AS
SELECT 'a', 'b' FROM DUAL UNION ALL
SELECT 'a', 'd' FROM DUAL;
CREATE TABLE t4 (city, name) AS
SELECT 'a', 'a' FROM DUAL UNION ALL
SELECT 'a', 'e' FROM DUAL;
クエリ:
SELECT COALESCE(t1.city, t2.city, t3.city, t4.city) AS city,
t1.name AS exist1,
t2.name AS exist2,
t3.name AS exist3,
t4.name AS exist4
FROM t1
FULL OUTER JOIN t2
ON ( t1.city = t2.city
AND t1.name = t2.name)
FULL OUTER JOIN t3
ON ( COALESCE(t1.city, t2.city) = t3.city
AND COALESCE(t1.name, t2.name) = t3.name)
FULL OUTER JOIN t4
ON ( COALESCE(t1.city, t2.city, t3.city) = t4.city
AND COALESCE(t1.name, t2.name, t3.name) = t4.name);
出力:
CITY EXIST1 EXIST2 EXIST3 EXIST4
---- ------ ------ ------ ------
a a a a
a b b
a c
a d
a e
出典
2016-06-14 12:37:43
MT0
これは、 'name'の列に参加していないとしませんありません。 c 2つ以上のテーブルに対するOPの要件をonsider onsider。 – MT0
こんにちはジョルゴス、お返事ありがとうございます。上記のクエリを実行すると、結合キーの値が常に一致するため、期待した結果が得られませんでした。したがって、結合キーに問題はありません。トリッキーポイント、2列目。上記の例では、 'RAMU'は第1のテーブルに存在しますが、第2のテーブルには存在しません。出力テーブルにはヌル値が表示されます。 2番目の表では、2番目の表に 'RAJ'が存在しますが、1番目の表には存在しません。このため、この値の出力にはNULL値が表示されます。これについての詳細が必要な場合はお知らせください。 –