Использование представления для обновления значений исходной таблицы

#sql #forms #ms-access

#sql #формы #ms-access

Вопрос:

Название в значительной степени говорит само за себя.

У меня есть представление vPersonalInfo , подключенное к таблице Customers , которое запрашивает определенную часть исходной таблицы. Я хочу иметь возможность изменять представление и получать результаты в Customers таблице.

Возможно ли это? Если нет, есть ли альтернативы? Заранее спасибо.

Примечание: я использую Access для отображения информации из vPersonalInfo представления в форме.

Например, у меня есть эта исходная таблица, которая называется Customers :

  ---- ------ ---------- 
| id | name | isActive |
 ---- ------ ---------- 
|  1 | Joe  |        0 |
|  2 | Mike |        1 |
|  3 | Will |        1 |
 ---- ------ ---------- 
  

Я создал представление, vPersonalInfo специально расположенное в базе данных Уилла:

  ---- -------- ----------- 
| id |  name  |  isActive |
 ---- -------- ----------- 
|  3 |   Will |         1 |
 ---- -------- ----------- 
  

Форма в Access запрашивает vPersonalInfo , и я хочу изменить значение isActive на 0 через форму в Access, чтобы оно изменило значение исходной таблицы.

Комментарии:

1. Что вы подразумеваете под «базой данных Уилла» ? Вы работаете с двумя отдельными базами данных? Когда вы ссылаетесь на «Представление», поскольку вы используете MS Access, я предполагаю, что вы имеете в виду «запрос»? Если вы не ссылаетесь на представление в SQL Server, которое связано в MS Access?

2. У каждого клиента есть определенная база данных, созданная для него (структура у всех одинакова), и есть основная база данных, содержащая таблицу клиентов. И да, я связал представление с SQL Server с Access, чтобы оно запрашивало представление при открытии формы.

Ответ №1:

Вы можете использовать left join :

 select c.id, c.name,
       nz(pi.isActive, c.isActive) as isActive
from customers as c left join
     vPersonalInfo as pi
     on c.id = pi.id;