[pgsql-jp: 37485] Re: [LEFT JOIN]の結合で結果が表示されません

Naoya Harasawa harasawa @ gust.jp
2006年 8月 25日 (金) 17:04:03 JST


さっきメール送った後で、やりたい意図がわかりました。

SELECT A.[NO], A.NAME, B1.KINGAKU, B2.KINGAKU, B3.KINGAKU
FROM ((A LEFT JOIN (select * from B where RAIREKI = 1) AS B1 ON A.NAME = B1.NAME)
LEFT JOIN (select * from B where RAIREKI = 2) AS B2 ON A.NAME = B2.NAME)
LEFT JOIN (select * from B where RAIREKI = 3) AS B3 ON A.NAME = B3.NAME;

でいいのではと思います

Naoya Harasawa


切明 裕次 wrote:
> こんにちは。切明と申します。
> 
> [LEFT JOIN]を使用して左側のテーブルを中心にして右側のテーブルを持ってくると
> 思って以下のSQLを実行してみたのですが結果が1行も表示されません。
> ちなみにb2までにするとaaaのみ表示されます。これは右側のテーブルに該当がない
> 場合結果として持ってきていないためだと思われます。
> 自分が思っている結果を出すにはどのようにすればいいのでしょうか。
> 宜しくお願いします。
> 
> SELECT * FROM ((A 
> LEFT JOIN B as b1 ON A.NAME=b.NAME) 
> LEFT JOIN B as b2 ON A.NAME=b2.NAME) 
> LEFT JOIN B as b3 ON A.NAME=b3.NAME
> WHERE b1.RAUREKU=1 AND b2.RAIREKI=2 AND b3.RAIREKI=3;
> 
> ●テーブルA
> | NO | NAME |
> |   1| aaa  |
> |   2| bbb  |
> |   3| ccc  |
> |   4| ddd  |
> ・・・
> 
> ●テーブルB
> | NAME | RAIREKI | KINGAKU |
> | aaa  |  1      | 10000   |
> | aaa  |  2      | 12000   |
> | bbb  |  1      |  8000   |
> | ccc  |  1      | 12500   |
> ・・・
> 
> ●結果(理想)
> | NO | NAME | b1.KINGAKU | b2.KINGAKU | b3.KINGAKU |
> |   1| aaa  |   10000    |   12000    |            |
> |   2| bbb  |    8000    |            |            |
> |   3| ccc  |   12500    |            |            |
> |   4| ddd  |            |            |            |
> ・・・
> 
> 




pgsql-jp メーリングリストの案内