[pgsql-jp: 26115] Re: 3つ以上のテーブルを無条件に結合する方法
WADA Hiroyuki
wada @ komine-ag.co.jp
2002年 5月 24日 (金) 12:27:12 JST
和田です。
"K.Ohyama" wrote:
> それならアプリケーション側で3回 SELECT してもらう方が手っ取り早くて
> 無駄が無いっすね。
そのとおりで、
> 今回やろうとしているのは6つテーブルがあったため、
> 「6回も SELECT させるのもどうだか...」
> って思ったわけなんですが...。
もともと無関係なテーブルを結合させる方が無駄だと思います。
無理やりこんなこともできなくもないですが、ソートされてしまいます。
(iが重複するとだめです。)
SELECT t1.count,t1.i,t1.j,t2.i,t2.j,t3.i,t3.j FROM
(SELECT count(*),t1a.* FROM
t1 AS t1a, t1 AS t1b
WHERE t1a.i >= t1b.i
GROUP BY t1a.i,t1a.j
ORDER BY t1a.i
) AS t1
FULL JOIN
(SELECT count(*),t2a.* FROM
t2 AS t2a, t2 AS t2b
WHERE t2a.i >= t2b.i
GROUP BY t2a.i,t2a.j
ORDER BY t2a.i
) AS t2
ON(t1.count=t2.count)
FULL JOIN
(SELECT count(*),t3a.* FROM
t3 AS t3a, t3 AS t3b
WHERE t3a.i >= t3b.i
GROUP BY t3a.i,t3a.j
ORDER BY t3a.i
) AS t3
ON(t1.count=t3.count)
pgsql-jp メーリングリストの案内