Je voudrais appeler une fonction d'agrégat (coût) une fois sur une colonne et la cascader à travers les jointures de gauche (utilisées pour créer une permutation ou une combinaison de lignes). De cette façon, je suppose que le coût est O (n) apposé pour l'appeler après les jointures O (ligne^jointures). À partir de quelque chose comme ceci:Colonne de fonction d'agrégat de passes avec jointure auto-gauche
id | cost
----------
1 | 5
2 | 10
Je voudrais faire quelque chose de similaire à ci-dessous. Je peux faire quelque chose de similaire avec une sélection dans une table temporaire et se joindre à ce mais je voudrais éviter d'utiliser une table temporaire ...
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 ...
Je préférerais faire quelque chose comme:
SELECT id, cost(id) as cost FROM plans AS t1
LEFT JOIN t1 AS t2
ON t1.id != t2.id
AND ...
Pour obtenir quelque chose comme ceci:
id | cost | id | cost |
-----------------------
1 | 5 |NULL| NULL |
2 | 10 |3 | 15 |
Toute aide serait grandement appréciée.
Que fait la fonction cost()? Vous ne lui donnez aucune contribution. Comment la deuxième colonne de coût serait-elle calculée si la fonction cost() avait des paramètres d'entrée provenant de la table (s)? –
Ok, j'ai mis "id" afin qu'il puisse référencer la ligne. – Moriarty
cost() pourrait être 1 + 1 J'ai juste besoin de savoir comment cascader la colonne à travers les jointures à gauche. Est-ce une sorte de sous-sélection? – Moriarty