我知道你不应该在数据库中存储计算值,但在这种情况下,给出了结构,我必须处理它.
我有两张桌子:
表1与字段(即客户,产品,价格,计数)
表2与字段(即客户,产品,描述)
我现在需要使用表2中匹配条目的数量更新Table1中的字段“count”.这两个表需要通过“customer”和“product”连接.
我的想法是这样的:
UPDATE Table1 SET Table1.count =
(SELECT COUNT(Table2.customer)
FROM Table2
WHERE Table2.customer = Table1.customer AND Table2.product = Table1.product)
WHERE Table1.count IS NULL
但是这给出了一个错误:
Operation must be an updateable query.
我正在搜索这方面和网络,并建议使用DCount功能,所以我重写了我的代码来做到这一点:
UPDATE Table1
SET Tabl1.count = DCount( "*", "Table2", "Table2.product = "& Table1.product AND "Table2.customer = "& Table1.customer)
WHERE Table1.count IS NULL
遗憾的是,这总是会返回Table2中存在的所有条目.因此,如果表2中有100个条目,则DCount值= 100,而不是Table1的特定条目(客户和产品相同)的匹配条目数量.
有人可以指出我在该语句中缺少的内容,以便我可以使用Table2中匹配条目的数量更新列“count”.
最佳答案 创建一个包含计数的临时表:
SELECT customer, product, COUNT(customer) as count
INTO CustomerCounts
FROM Table2
GROUP BY customer, product
使用Table1更新新表的连接:
UPDATE
Table1 t JOIN
CustomerCounts cc ON cc.customer = t.customer
AND cc.product = t.product
SET t.count = cc.count