Mam tabelę główną/szczegółową i chcę zaktualizować niektóre wartości podsumowania w tabeli głównej w odniesieniu do tabeli szczegółów. Wiem, że mogę zaktualizować je tak:Zaktualizuj wiele wartości w pojedynczej instrukcji.
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)
Ale chciałbym to zrobić w jednym rachunku, mniej więcej tak:
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
ale to nie działa. Próbowałem także wersji, które pomijają klauzulę "grupuj według". Nie jestem pewien, czy napotykam na ograniczenia mojej konkretnej bazy danych (Advantage), czy na ograniczenia mojego SQL. Prawdopodobnie to drugie. Czy ktoś może pomóc?
@Chris, to też nie działa dla mnie. Jeśli to działa dla ciebie, prawdopodobnie wpadnę na ograniczenie mojej konkretnej bazy danych. – Kluge
Wyjaśniłem teraz moje oryginalne pytanie, aby pokazać, że próbowałem pominąć klauzulę "grupuj według". Dzięki! – Kluge
Jakiego serwera/wersji bazy danych używasz? Kiedy mówisz o moim SQL, masz na myśli "moje umiejętności SQL" lub "mySQL, serwer"? – Chris