[pgsql-jp: 30651] Re: 2つのテーブルからWeb 上でグループ表記
Takao Kato
sirius @ jp.fujitsu.com
2003年 8月 1日 (金) 09:27:39 JST
加藤@川崎です。
> No1 AAA BBB No2 DDD
> ----+------+------+------+-----
> 1 あ い 1 abc
> 2 def
> 3 ghi
<tr valign=top>
<td rowspan=3>1</td>
<td rowspan=2>あ</td><td rowspan=2>い</td>
<td>1</td><td><td>abc</td>
<tr>
<td>2</td><td>def</td>
<tr>
<td>3</td><td>ghi</td>
としたいってことですか?それなら素直に、
=> SELECT a.No1,count(*) FROM tableA a,tableB b WHERE a.No1 = b.No_a order by a.No1 desc;
を事前にしてしまえば良いのではないでしょうか。で、
$tmp = pg_fetch_array($result,$i);
$rowpan[$tmp[0]] = $tmp[1];
とかして <td> の行調整情報を事前に準備しておけばOKかと。まぁ、二度手間っ
て話はありますが。しかしこれってPHPの話でしかないなぁ,,,
PostgreSQL的な方法だと検索結果の集合(配列)を返す方法が考えられますね。
# 以前やろうとして失敗したと [pgsql-jp: 39542] で話題をふったところ、
# [pgsql-jp: 30563]にて和田さんに絶妙なfunctionを伝授していただきました。
これのtext版(仮にaggとしますが)を作って
=> select a.*,agg(b.No2) as No2,agg(b.DDD) as DDD
-> FROM tableA a,tableB b
-> WHERE a.No1 = b.No_a ORDER BY a.No1 DESC;
No1 AAA BBB No2 DDD
----+-----+-----+-------+-------------
1 あ い {1,2,3} {abc,def,ghi}
2 え お {4} {as}
3 き く {5,6} {asas,wwww}
4 こ さ {7,8,9} {ert,tyu,uio}
5 す せ {10} {oil}
(5 columns)
=>
とするのはどうでしょう?あとはphpで根性だして subXXX とか strXXX を乱発 ^^;
# まぁ、最初と最後の文字を省いて , で分割すれば良い話ですから、それほ
# ど手間でもないでしょう。
デハデハ
-------------------------------------------------------------
加藤@川崎
pgsql-jp メーリングリストの案内