[pgsql-jp: 39397] Re: NOT NULL 同士の外部結合
ゆむ
qqqz9b69 @ green.ocn.ne.jp
2008年 6月 4日 (水) 17:14:35 JST
table_a
a_id | code
------+------
1 | abc
2 | def
table_b
b_id | code
------+------
1 | aaa
2 | abc
という2つのテーブルで
SELECT table_a.a_id, table_a.code, table_b.b_id, table_b.code
FROM table_a LEFT OUTER JOIN table_b USING(code);
とすると、結果は以下のようになりますけど。
a_id | code | b_id | code
------+------+--------+--------
1 | abc | 2 | abc
2 | def | (null) | (null)
当然のことながら、table_bでcodeにNOT NULL制約が付いていようと、
結合する行が存在しなければnullにしかならないわけです。
そんな行は要らん!!って言うのであれば、INNER JOINを使えば良いわけで、
LEFT OUTER JOINってのは、そんな行でも要る人向けのやり方です。
--
ゆむ
↓↓↓↓↓↓↓↓↓ Original Message ↓↓↓↓↓↓↓↓↓
From: Nobuyasu Jinnai (Aset ITM) <Nobuyasu.Jinnai @ aset.co.jp>
To: pgsql-jp @ ml.postgresql.jp
Date: Wed, 04 Jun 2008 15:16:55 +0900 (JST)
Subject: [pgsql-jp: 39396] NOT NULL 同士の外部結合
- - - - - - - - - - - - - - - - - - - -
> すみません。こんがらがっていますのでご助言頂きたく存じます。
>
> 例えばテーブルA,B を LEFT OUTER JOIN したような場合、
> 該当カラムの定義が NOT NULL であっても、NULL な集合が
> 生まれることがあるのでしょうか?
> また、あるとしたらどのような場合でしょうか?
>
> #もう一度ちゃんと勉強すべきだとは思いますが、、、
>
> よろしくお願いします。
↑↑↑↑↑↑↑↑ Original Message Ends↑↑↑↑↑↑↑↑
pgsql-jp メーリングリストの案内