Ich habe eine Master/Detail-Tabelle und möchte einige zusammenfassende Werte in der Master-Tabelle gegen die Detail-Tabelle aktualisieren. Ich weiß, ich kann sie wie folgt aktualisiert:Mehrere Werte in einer einzigen Anweisung aktualisieren
update MasterTbl set TotalX = (select sum(X) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalY = (select sum(Y) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
update MasterTbl set TotalZ = (select sum(Z) from DetailTbl where DetailTbl.MasterID = MasterTbl.ID)
Aber, ich mag es in einer einzigen Anweisung tun, so etwas wie diese:
update MasterTbl set TotalX = sum(DetailTbl.X), TotalY = sum(DetailTbl.Y), TotalZ = sum(DetailTbl.Z)
from DetailTbl
where DetailTbl.MasterID = MasterTbl.ID group by MasterID
aber das funktioniert nicht. Ich habe auch versucht, Versionen, die die "Gruppierung nach" -Klausel weglassen. Ich bin mir nicht sicher, ob ich gegen die Grenzen meiner speziellen Datenbank (Advantage) oder die Grenzen meines SQL stoße. Wahrscheinlich Letzteres. Kann jemand helfen?
@Chris, das funktioniert auch nicht für mich. Wenn es für Sie funktioniert, stoße ich wahrscheinlich auf eine Einschränkung meiner speziellen Datenbank. – Kluge
Ich habe jetzt meine ursprüngliche Frage geklärt, um zu zeigen, dass ich versucht habe, die "Group by" -Klausel wegzulassen. Vielen Dank! – Kluge
Welchen Datenbankserver/welche Version verwenden Sie? Wenn du mein SQL sagst, meinst du "meine SQL-Kenntnisse" oder "mySQL, der Server"? – Chris