集計関数(コスト)を列に1回呼び出して、セルフルール結合(順列または行の組み合わせを作成するために使用)をカスケードしたいとします。そのようにして、コストはO(n)行の結合後に呼び出すことができます。自己集約関数集約関数列を渡す
id | cost
----------
1 | 5
2 | 10
私は以下のようにしたいと思います。私は、私のような何かをすることを好むだろう
CREATE TEMP TABLE tmp_750309_plans AS (SELECT *, cost(id) as cost FROM plans WHERE plans.id IN (1,2,...));
SELECT * FROM tmp_750309_plans AS t1 LEFT JOIN tmp_750309_plans AS t2 ON ...
...私は一時テーブルを使用して避けたい一時テーブルに選択と似た何かをして、そのオフ参加したが
ことができます。 SELECT id, cost(id) as cost FROM plans AS t1
LEFT JOIN t1 AS t2
ON t1.id != t2.id
AND ...
このような何かを得るために :
id | cost | id | cost |
-----------------------
1 | 5 |NULL| NULL |
2 | 10 |3 | 15 |
任意の助けいただければ幸いです。
cost()関数は何をしていますか?あなたはそれを入力していません。 cost()関数にテーブルからの入力パラメータがある場合、2番目のコスト列はどのように計算されますか? –
私は "id"を入れて行を参照できるようにしました。 – Moriarty
cost()は1 + 1になります。左の結合を介して列をカスケードする方法を知る必要があります。それはある種のサブセレクトですか? – Moriarty