[pgsql-jp: 37140] 結合時に複数の中から特定のレコードの最大値を持ってくるには(Bが無い場合も含める)
切明 裕次
y-kiriaki @ tec.co.jp
2006年 6月 2日 (金) 15:10:26 JST
こんにちは。切明と申します。
先日、”結合時に複数の中から特定のレコードの最大値を持ってくるには”で高橋様
にお世話になった
のですが、またまた問題が出てきてしまいました。
前回と同じ内容なのですが、テーブルAにあってテーブルBに無いデータがある場合で
す。
教えていただいたとおり実行すると、”ddd”が結果として出てきません。
そこで、”inner join”を”left join”に変更してみましたが、今度は”aaa”の結
果が複数出てしまいます。
どなたか出来る方法をお知りでしたらご教授願えないでしょうか。
お手数ですが宜しくお願いします。
○変更したselect文
select A.NO, A.NAME, B.KINGAKU from (A
left join B on A.NAME=B.NAME)
left join ( select name, max( RAIREKI) as RAIREKI from B group by name )
as T1
on T1.NAME = B.NAME and T1.RAIREKI = B.RAIREKI
○結果(実際)
| NO | NAME | KINGAKU |
| 1| aaa | 10000 |
| 1| aaa | 12000 |
| 2| bbb | 8000 |
| 3| ccc | 12500 |
| 4| ddd | |
・・・
●テーブルA
| NO | NAME |
| 1| aaa |
| 2| bbb |
| 3| ccc |
| 4| ddd |
・・・
●テーブルB
| NAME | RAIREKI | KINGAKU |
| aaa | 0 | 10000 |
| aaa | 1 | 12000 |
| bbb | 0 | 8000 |
| ccc | 0 | 12500 |
・・・
●結果(理想)
| NO | NAME | KINGAKU |
| 1| aaa | 12000 |
| 2| bbb | 8000 |
| 3| ccc | 12500 |
| 4| ddd | |
・・・
pgsql-jp メーリングリストの案内