访问:使用子查询中的计数更新查询 - 错误或所有结果
Access: Update query with count in subquery - error or all results
我知道您不应该将计算值存储在数据库中,但在这种情况下,结构已经给出,我必须处理它。
我有两个 table:
Table1
与字段(即 customer, product, price, count
)
Table2
与字段(即 customer, product, description
)
我现在需要用 table 中匹配条目的数量更新表 1 中的字段 "count" 2. 这两个 table 需要通过 [=42= 连接] 和 "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
中存在的所有条目。因此,如果我在 Table2
中有 100 个条目,则 DCount 值 = 100 而不是 Table1
(客户和产品相同)的特定条目的匹配条目数量。
有人可以指出我在该声明中遗漏的内容,以便我可以使用 Table2
.
中匹配条目的数量更新列 "count"
创建一个临时 table 计数:
SELECT customer, product, COUNT(customer) as count
INTO CustomerCounts
FROM Table2
GROUP BY customer, product
更新新 table 与表 1 的连接:
UPDATE
Table1 t JOIN
CustomerCounts cc ON cc.customer = t.customer
AND cc.product = t.product
SET t.count = cc.count
我知道您不应该将计算值存储在数据库中,但在这种情况下,结构已经给出,我必须处理它。
我有两个 table:
Table1
与字段(即 customer, product, price, count
)
Table2
与字段(即 customer, product, description
)
我现在需要用 table 中匹配条目的数量更新表 1 中的字段 "count" 2. 这两个 table 需要通过 [=42= 连接] 和 "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
中存在的所有条目。因此,如果我在 Table2
中有 100 个条目,则 DCount 值 = 100 而不是 Table1
(客户和产品相同)的特定条目的匹配条目数量。
有人可以指出我在该声明中遗漏的内容,以便我可以使用 Table2
.
创建一个临时 table 计数:
SELECT customer, product, COUNT(customer) as count
INTO CustomerCounts
FROM Table2
GROUP BY customer, product
更新新 table 与表 1 的连接:
UPDATE
Table1 t JOIN
CustomerCounts cc ON cc.customer = t.customer
AND cc.product = t.product
SET t.count = cc.count