基于2个表

时间:2015-07-31 13:42:18

标签: sql excel vba

首先我要说的是,我没有使用正确的工具来完成工作,但它们是我可以访问的唯一工具。

我使用Excel作为包含多个具有关联数据的表的数据库。通常在数据库中,此数据可能与外键相关联,但我认为这与Excel不同。

我有两张桌子:

TABLE items
batch_id  customer_id
1         1
2         1
3         2

TABLE customers
id      customer
1       cust1
2       cust2

我有一个userform,只允许用户按名称选择客户。 我希望能够做的是根据特定的batch_id和客户名称更新items表中的customer_id。

这是我到目前为止所做的工作。

UPDATE [items$]
SET [items$].customer_id=[customers$].id
INNER JOIN [customers$] 
ON [items$].customer_id=[customers$].id
WHERE [items$].batch_id='value1'
AND [customers$].customer='value2'

[UPDATE]

以下似乎更接近答案,但是给我一个'操作必须使用可更新的查询。'错误。

UPDATE items
SET items.customer_id=(
    SELECT FIRST(customers.id)
    FROM customers
    WHERE customers.customer=value2)
WHERE items.batch_id=value1;

我一直在进行操作必须使用可更新的查询错误'有了这个,但我认为没有理由为什么它不应该

2 个答案:

答案 0 :(得分:0)

我不确定如何加入excel VBA。但是update语法应该是(如果你想更新所有行)

Update items
set items.customer_id = (select customers.id 
                                     from customers inner join items 
                                     on customers.id = items.customer_id 
                                     where customers.id='Value2' 
                                     and items.batch_id='Value1');

希望这可能有助于你

答案 1 :(得分:0)

尝试使用以下一次可能会得到预期的结果。

但这是SQL的情况。

UPDATE items i
JOIN customers c ON i.customer_id = c.id
SET i.customer_id = c.customer