Редактирование данных в таблице запросов, основанной на двух таблицах
Рис. 7.8. Редактирование данных в таблице запросов, основанной на двух таблицах
Результат, полученный при выполнении п. 5, наверняка вас удивил. Однако если задуматься о принципе работы запросов, загадка перестанет быть таковой. Запрос выбирает данные, как из таблицы Растения, так и из таблицы Типы, поэтому каждая строка запроса соответствует одной строке таблицы Растения. Названия полей Имя и ЛатинскоеИмя получены именно из таблицы Растения.
Но как насчет поля Описание, которое расположено в таблице Типы? Когда запрос выводит содержимое указанного поля, сначала используется значение Номер типа из таблицы Растения. С помощью этого значения запрос определяет строку таблицы Типы, которая должна соответствовать текущей строке таблицы Растения.
Итак, хотя поле Декоративное встречается в оригинальной таблице четыре раза, оно сохранено в базе данных лишь один раз. Запрос просматривает значения для каждой строки и, следовательно, отображает его все четыре раза.
А что же происходит при изменении значения? Запрос «знает» о том, какая строка в таблице Типы используется для получения исходного значения, и обновляет эту строку в таблице. Однако затем обрабатываются все другие строки, и значение обновляется везде, где встречается в строках. В следствие этого изменение одной строки данных влияет на другие строки запроса, в котором отображаются данные различных таблиц. Эта функция Access, называемая строковой привязкой, предотвращает отображение в запросе данных, которые отсутствуют в таблицах.