credit
creditId | cntDoneInstalment (...)
instalmnet
instalmentId | creditId | isDone (...)
relacja jeden (kredyt) do wielu (raty)
Pole cntDoneInstalment jest polem pomocniczym do innego zapytania, bo po co to w tamtym zapytaniu liczyć, prawda?...
I teraz chce aby po zedytowaniu rekordu raty była przeliczana liczba spłaconych rat (cntDoneInstalment)
No i teraz problem w tym, że robię sobie transakcję:
1. edytuje ratę
2. edytuje pole cntDoneInstalment tego kredytu
No i jak zrobić zapytanie 2, mając jedynie instalmentId?
Napisałem coś takiego:
UPDATE credit SET credit.cntDoneInstalment = ( SELECT COUNT( instalment.instalmentId ) FROM instalment WHERE instalment.isDone = 1 AND instalment.creditId = ( SELECT instalment.creditId FROM instalment WHERE instalment.instalmentId = 14 ) ) WHERE credit.creditId = ( SELECT instalment.creditId FROM instalment WHERE instalment.instalmentId = 14 )
Ale raz, że nie działa - nic nie modyfikuje

Dwa, nawet jakby działało to mam 2 razy podzapytanie o creditId:
SELECT instalment.creditId FROM instalment WHERE instalment.instalmentId = 14
a więc jak to przy UPDATE wrzucić jakoś w zmienną?
A może zupełnie coś innego?
EDIT
Aj sorry, podane przeze mnie zapytanie jednak działa. Po prostu jak zapytanie ma zmodyfikować tabele w taki sposób, że wszystkie rekordy pozostaną bez zmian to dostaje, że zedytowano rekordów = 0. No tak słusznie

A więc chodzi o optymalizację tego. Jak wplątać tą zmienną?