こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

複数行の結果を単一列に連結(複数のテーブルを参照)

psql (PostgreSQL) 7.3.4です。
困っています 以下のような【TABLE1】と【TABLE2】を TABLE1のt1tot2にで結合した結果を
【A.結果】のように★▲●の行を1行に表示させて取得したいのですがうまくいきません。

【TABLE1】
ID,ID_SUB, TYPE, VALUE
A A1 t1 1 ★
A A1 t2 2 ★
A A1 t1 1 ▲
A A1 t2 3 ▲
B B1 t1 1 ●
B B1 t2 3 ●


【TABLE2】
ID, TYPEV1 ,TYPEV2 ,Code
A 1 1 AAA1
A 1 2 AAA2 ★
A 1 3 AAA3 ▲
B 1 3 BBB1 ●

 TYPEV1=TABLE1のt1の値
TYPEV2=TABLE1のt2の値


【得たい結果】
ID, ID_SUB, TYPEV1, TYPEV2,Code
A A1 1 2 AAA2★
A A1 1 3 AAA2▲
B B1 1 3 BBB1●



下記でTABLE1の2行を1行にまとめることができましたが、
問題のTABLE2との連結方法が分かりません。

select TABLE1.ID , TABLE1.ID_SUB ,
TABLE1.VALUE as t1 ,
(SELECT tbl1.VALUE FROM TABLE1 tbl1 where tbl1.TYPE=t2 and
(TABLE1.ID , TABLE1.ID_SUB)=(tbl1.ID , tbl1.ID_SUB)) as t2
from TABLE1
where TABLE1.TYPE = t1

【結果】
ID ,ID_SUB , t1  ,t2
A A1 1 2 ★
A A1 1 3 ▲
B B1 1 3 ●


何か良い方法はありますでしょうか?

投稿日時 - 2008-12-04 14:59:40

QNo.4529199

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

カラム名と同様にカンマ区切りしたほうがいいですよ。

結合方法が良く分かりません
> TYPEV1=TABLE1のt1の値
>TYPEV2=TABLE1のt2の値

投稿日時 - 2008-12-05 11:50:42

あなたにオススメの質問