Использование подзапросов при вставке данных
Назад<<< | Содержание | Вперёд>>> |
Бывает необходимо вставить в одну таблицу данные из другой таблицы, соответствующие какому-либо условию. В таких случаях наиболее эффективно использовать подзапросы. Этим способом подобная задача решается достаточно быстро.
Работаем с базой данных "Недвижимость". Скрипт для создания этой базы данных, её таблиц и заполения таблиц данными - в файле по этой ссылке.
Таблица Object содержит данные об объектах. В этой таблице нам понадобятся значения столбца Type, содержащего данные о типе объекта - квартира или дом (flat, house).

Допустим, в базе данных уже создана таблица Object_House, в которую нужно поместить данные обо всех объектах типа "Дом", то есть соответствующих условию type = 'house'. Если в обеих таблицах (Object и Object_House) присутствуют одни и те же столбцы и порядок их следования также одинаков, то можем написать следующий запрос.
Таким образом, при использовании оператора "звёздочка" в подзапросе из таблицы Object излекаются значения всех столбцов, а, поскольку в основном запросе (на вставку данных) никакие столбцы не указываются, то данные вставляются в таблицу Object_House в том же порядке, в каком они следуют в таблице Object.
А если порядок следования столбцов в таблицах различается? Тогда задачу можно решить двумя способами. Первый: указать в основном запросе (на вставку данных) столбцы в том порядке, в каком они следуют таблице Object_House. Запрос будет следующим.
Равноценным по результату будет запрос, в котором нужный порядок следования столбцов будет указан в подзапросе:
Рассмотрим также случай, когда в таблице, в которую требуется вставить данные, присутствуют не все столбцы, которые есть в таблице, из которой данные извлекаются. В этом случае необходимо указать имена столбцов как в основном запросе, так и в подзапросе. Запрос будет следующим.
Поделиться с друзьями
Назад<<< | Содержание | Вперёд>>> |