Selon les SGBD, tu peux mettre à jour plusieurs tables à la fois, ou tout du moins, utiliser plusieurs tables pour retrouver les lignes à mettre à jour dans une table.
Si ton SGBD ne supporte pas ce type de requête, utilise une sous-requête pour retrouver les lignes à mettre à jour.
Exemple :
update table1 set champ1 = (select count(*) from table2 where table2.champ1 = table1.id)
Un SGBD tel que Access 2000 doit supporter cette requête.