如何基于布尔值通过乘法更新Microsoft Access中的ToplamBorc列?
解决方案
思路说明
通过关联Borc、AidatDurum和AylikAidat三张表,针对每个TCKimlik,判断AidatDurum中各月份列是否为false(表示未缴会费),将对应AylikAidat表中的会费金额累加,最终更新Borc表的ToplamBorc列。
SQL 实现(以 MySQL 为例)
UPDATE Borc b JOIN AidatDurum ad ON b.TCKimlik = ad.TCKimlik JOIN AylikAidat aa ON b.TCKimlik = aa.TCKimlik SET b.ToplamBorc = (CASE WHEN ad.Ocak = FALSE THEN aa.Ocak ELSE 0 END) + (CASE WHEN ad.Subat = FALSE THEN aa.Subat ELSE 0 END) + (CASE WHEN ad.Mart = FALSE THEN aa.Mart ELSE 0 END) + (CASE WHEN ad.Nisan = FALSE THEN aa.Nisan ELSE 0 END) + (CASE WHEN ad.Mayis = FALSE THEN aa.Mayis ELSE 0 END) + (CASE WHEN ad.Haziran = FALSE THEN aa.Haziran ELSE 0 END) + (CASE WHEN ad.Temmuz = FALSE THEN aa.Temmuz ELSE 0 END) + (CASE WHEN ad.Agustos = FALSE THEN aa.Agustos ELSE 0 END) + (CASE WHEN ad.Eylul = FALSE THEN aa.Eylul ELSE 0 END) + (CASE WHEN ad.Ekim = FALSE THEN aa.Ekim ELSE 0 END) + (CASE WHEN ad.Kasim = FALSE THEN aa.Kasim ELSE 0 END) + (CASE WHEN ad.Aralik = FALSE THEN aa.Aralik ELSE 0 END);
关键说明
- 语句通过
TCKimlik关联三张表,确保处理的是同一用户的记录。 - 使用
CASE语句判断每个月份的缴费状态:若AidatDurum中对应列值为false,则取AylikAidat中该月的会费金额,否则取0。 - 将所有未缴月份的会费金额累加后,赋值给
Borc.ToplamBorc。 - 若使用其他数据库(如 SQL Server),可将
CASE替换为IIF函数,逻辑保持一致。
内容的提问来源于stack exchange,提问作者Axciom
相关产品推荐
相关产品推荐

