ST_Makeline mit Punkten aus anderer Tabele

Hallo ich möchte einen in einer Tabelle erzeugten Geometry Colum mit Linestrings füllen.
In der Tabelle stehen bereits die Knotennummern, somit muss ich nur einen Lookup in die Knotentabelle machen um die entsprechenden Daten zu bekommen… mein querry sieht im Moment so aus:

update netzmodel_strecken SET strecken_pos_4326 = 
ST_MakeLine(
        (select netzmodel_knoten.knoten_pos_4326 from netzmodel_knoten, netzmodel_strecken where netzmodel_knoten.knotennummer = netzmodel_strecken.knotennummer_1),
        (select netzmodel_knoten.knoten_pos_4326 from netzmodel_knoten, netzmodel_strecken where netzmodel_knoten.knotennummer = netzmodel_strecken.knotennummer_2)
        );

wenn ich ihn so ausführe bekommen ich folgende Fehlermeldung:

FEHLER: als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile

Knotennummer ist aber einzigartig (uniqe primary key)…

ich weiß echt nicht was ich hier falsch mache… :frowning:

Du übergibst Makeline jeweils das Ergebniss mehrerer Subselects mit mehreren Punkten am Stück. Das geht aber nur mit einem subselect WIMRE, deshalb solltest du die Unterabfragen aus der Funktion auslagern und extra behandeln bzw. mit union zu einer Ergebnisabfrage zusammenfassen.

Gruß Uwe

Edit: Im Handbuch, der unerschöpflichen Quelle für Beispiele wird etwas ähnliches mit einem Array gemacht :wink: