Ich möchte eine Aggregatfunktion (Kosten) einmal für eine Spalte aufrufen und sie über die Self-Left-Joins kaskadieren (um eine Permutation oder eine Kombination von Zeilen zu erstellen). Auf diese Weise stelle ich fest, dass die Kosten O (n) sind, um sie nach den Joins O (Zeile^Joins) aufzurufen. Beginnend mit etwas wie diesem:Aggregatfunktionsspalte mit selbst linkem Join übergeben
id | cost
----------
1 | 5
2 | 10
Ich möchte etwas ähnliches wie unten tun. Ich kann etwas ähnliches mit einer Auswahl in eine temporäre Tabelle tun und aus, dass der Beitritt aber Ich mag ...
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 ...
Ich würde mit einer temporären Tabelle vermeiden, bevorzugt etwas wie zu tun:
SELECT id, cost(id) as cost FROM plans AS t1
LEFT JOIN t1 AS t2
ON t1.id != t2.id
AND ...
Um etwas wie diese:
id | cost | id | cost |
-----------------------
1 | 5 |NULL| NULL |
2 | 10 |3 | 15 |
Jede Hilfe wäre sehr dankbar.
Was macht die cost() - Funktion? Sie geben ihm keine Eingaben. Wie würde die zweite Kostenspalte berechnet, wenn die Funktion cost() irgendwelche Eingabeparameter hat, die aus den Tabellen kommen? –
Ok, ich habe "ID" gesetzt, damit es auf die Zeile verweisen kann. – Moriarty
Kosten() könnte 1 + 1 Ich muss nur wissen, wie Sie die Spalte durch die linken Joins kaskadieren. Ist es eine Art Unterauswahl? – Moriarty