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