0

私は2つのテーブルを持っています:

id
1
2
3
4

t1およびt2

id | related_id
1  | 2
1  | 3

ここで、t2はt1レコード間の関係テーブルです。目的の出力を得る最良の方法は何ですか?

t1.id | t1_copy.id
1     | NULL -- want to get this NULL row
1     | 2
1     | 3

Simpleはほとんど機能しますが、最初の行JOINは表示されません。NULL

SELECT t1.id, t1_copy.id FROM t1
LEFT JOIN t2 ON t1.id = t2.id
LEFT JOIN t1 t1_copy ON t1_copy.id = t2.related_id
WHERE t1.id = 1

PS:はい、私は望ましい出力が奇抜であることを理解しています。

4

2 に答える 2

1

単純なUNIONがトリックを行う必要があるようです

SELECT
   id, 
   null as copy_id
FROM
   t1 
WHERE
  exists (select * from t2 where t1.id = t2.id)
UNION ALL
SELECT
   t1.id,
   t2.related_id
FROM
   t1 
   INNER JOIN t2
   ON t1.id = t2.id

SQLフィドル

于 2013-01-29T16:56:26.203 に答える
-1
SELECT DISTINCT t1.id, t1_copy.id FROM t1
LEFT OUTER JOIN t2 ON t1.id = t2.id
WHERE t1.id = 1
于 2013-01-29T17:08:35.827 に答える