[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 メーリングリストの案内