2015-07-31 3 views
0

Позвольте мне начать с того, что я не использую нужные инструменты для работы, но они являются единственными инструментами, к которым у меня есть доступ.Excel SQL update на основе значений в 2 таблицах

Я использую Excel в качестве базы данных, которая содержит несколько таблиц со связанными данными. Обычно в базе данных эти данные могут быть связаны с внешним ключом, но я верю, что это не относится к Excel.

У меня есть 2 таблицы:

TABLE items 
batch_id customer_id 
1   1 
2   1 
3   2 

и

TABLE customers 
id  customer 
1  cust1 
2  cust2 

У меня есть UserForm, который только позволяет пользователю выбрать клиента по имени. То, что я хотел бы сделать, это обновить 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; 

Я постоянно получаю «операции должен использоваться обновляемый ошибку запроса» с этим, но в противном случае я не вижу причин, почему она не должна работать

+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'); 

Надеется, что это может помочь у

+0

Приносим извинения, я ошибся в своем первоначальном запросе, я хотел спросить [клиентов $]. Customer not .id – Chris

0

Попробовать следующий раз может быть вы получите ожидаемый результат.

Но это случай SQL.

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

После добавления операторов WHERE он выдает синтаксическую ошибку – Chris

Смежные вопросы