Hallo,
ich habe bisher mit dem SQL Server gearbeit und will/muss/möchte jetzt Postgres benutzen . Jetzt habe ich mal eine recht spezielle Frage zur Syntax des update-Befehls. Im SQL Server kann ich so etwas schreiben:
update p – p ist der selbe Alias wie in der from-Klausel
set lastLoggerMeasurementDate = (select max(dataDate) from
tblEffBlockData where efficiencyBlockId = el.efficiencyBlockId)
from tblLogger dl
join tblPlant p on dl.plantId = p.plantId
join viewEffBlockLogger el on el.loggerId = dl.loggerId
Mein Probelm ist, dass ich im SQL Server im update-Teil einen Alias verwenden kann, der in der from-Klausel definiert ist. Natürlich funktioniert das jetzt nicht mehr so, da Postgres den Alias als Tabelle interpretiert. Was ich eigentlich machen will:
update alle Zeilen in tblPlant und berechne für jede Zeile den Wert für ‘lastLoggerMeasurementDate’. Dieser Wert kann mit
select max(dateDate) from tblEffBlockData where efficiencyBlockId = xxx
ermittelt werden. Die efficiencyBlockId kommt aus dem join in der from-Klausel, wie oben zu sehen.
Vielleicht kann mir jemand helfen, diese Abfrage in Postgres neu zu schreiben. Was bei mir nicht funktioniert hat, ist folgendes Beispiel:
update tblPlant
set lastLoggerMeasurementDate = (select max(dataDate) from
tblEffBlockData where efficiencyBlockId = el.efficiencyBlockId)
from tblLogger dl
join tblPlant p on dl.plantId = p.plantId
join viewEffBlockLogger el on el.loggerId = dl.loggerId
In diesem Fall hatten alle Einträge in tblPlant den gleichen Wert, was nicht unbedingt gewollt ist
Vielen Dank
Lothar