Создание запросов на вставку результатов (визуальные инструменты для баз данных)
Запрос вставки результатов позволяет копировать строки внутри таблицы или из одной таблицы в другую. Например, с помощью запроса вставки результатов можно скопировать сведения о названиях книг некоторого издателя из таблицы titles в другую таблицу, которая будет ему доступна. Запрос вставки результатов похож на запрос создания таблицы, но копирует строки в уже существующую таблицу.
Строки можно скопировать из одной таблицы в другую методом вырезания и вставки. Создайте запрос для каждой таблицы и запустите их. Скопируйте нужные строки из одной сетки результатов в другую.
При создании запроса вставки результатов необходимо указать следующее.
- Таблицу базы данных, куда нужно скопировать строки (целевую таблицу).
- Таблицу или таблицы, из которых копируются строки (исходную таблицу). Исходная таблица или таблицы становятся частью вложенного запроса. При копировании данных внутри таблицы целевая таблица совпадает с исходной.
- Столбцы в исходной таблице, содержимое которых нужно скопировать.
- Столбцы в целевой таблице, в которые нужно скопировать данные.
- Условия поиска для выборки строк, которые нужно скопировать.
- Порядок сортировки, когда нужно скопировать строки в определенном порядке.
- Параметры группировки для случаев, когда нужно скопировать только сводные данные.
Например, следующий запрос копирует сведения о названиях книг из таблицы titles в архивную таблицу archivetitles . Запрос копирует содержимое четырех столбцов для всех названий, принадлежащих указанному издателю:
INSERT INTO archivetitles (title_id, title, type, pub_id) SELECT title_id, title, type, pub_id FROM titles WHERE (pub_id = '0766')
Чтобы вставить значения в новую строку, используйте запрос вставки значений.
Можно скопировать содержимое всех или только выбранных столбцов в строке таблицы. В любом случае, копируемые данные должны быть совместимы со столбцами целевой таблицы. Например, при копировании содержимого столбца price столбец, куда копируются данные, должен допускать числовые данные с десятичным разделителем. При копировании всей строки физическое положение совместимых столбцов целевой и исходной таблицы должно совпадать.
При создании запроса вставки результатов внешний вид панели критериев меняется, отражая параметры, доступные для копирования данных. Добавляется столбец «Добавить» позволяющий указать столбцы, в которые необходимо скопировать данные.
Результат выполнения запроса вставки результатов отменить нельзя. В целях предосторожности создайте резервную копию данных перед выполнением запроса.
Создание запроса вставки результатов
- Создайте новый запрос и добавьте таблицу, из которой нужно скопировать строки (исходную таблицу). При копировании строк внутри таблицы в качестве целевой таблицы нужно указать исходную.
- В меню Конструктор запросов выберите пункт Тип изменения, а затем пункт Вставить результаты.
- В диалоговом окне Выбор целевой таблицы для инструкции Insert Resultsвыберите таблицу, в которую нужно скопировать строки (целевую таблицу).
Примечание Конструктор запросов и представлений не может заранее определить, какие таблицы и представления можно обновить. Поэтому список Имя таблицы в диалоговом окне Выбор целевой таблицы для вставки результатов содержит все доступные таблицы и представления в запрашиваемом подключении к данным (даже те, в которые нельзя скопировать строки).
Примечание При добавления столбца для поиска на панели критериев конструктор запросов и представлений также включит его в список столбцов, подлежащих копированию. Если столбец нужно использовать только для поиска, но не для копирования, снимите флажок рядом с именем столбца в прямоугольнике, который представляет таблицу или возвращающий табличное значение объект.
При выполнении запроса «вставка результатов» панель Результатыне отображает никаких сообщений. Вместо этого появляется сообщение о количестве скопированных строк.
Как добавить результаты запроса в существующую таблицу
Как добавить данные в существующую таблицу из другой таблицы?
Подскажите, как в Access2002 залить (добавить) данные из другой таблицы? К примеру, у меня есть.
Как добавить поле в существующую Аксессовскую таблицу
Как добавить поле в существующую Аксессовскую таблицу и установить ей логический тип?
Как в Visual Basic 6 добавить запись в существующую таблицу MS Access ?
Здравствуйте ! Мне необходимо решить следующую задачу: допустим существует таблица MS Access 2003 c.
Как записать в таблицу результаты запроса?
Уважаемые господа ! Не подскажет ли кто такую вещь. Выполнен запрос Query1. Теперь нужно.
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
в столбец данные не добавляются. Данные добавляются сразу целыми записями. в столбце запись корректируется
1 2 3 4 5
UPDATE zakaz SET sena_zakaz = mebel.sena_mebel*zakaz.kol_vo FROM zakaz JOIN mebel ON zakaz.Id_mebel = mebel.Id_mebel
Регистрация: 06.12.2015
Сообщений: 215
YuryK, почему нельзя использовать UPDATE в функциях?
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
потому, что в функции принято выбирать или вычислять, а не подгонять под результат Для UPDATE/INSERT/DELETE имеются ХП
Регистрация: 06.12.2015
Сообщений: 215
YuryK, но мне по заданию сказано что нужно через функцию сделать, вот пытался но ругается на UPDATE, просит заменить на SELECT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
CREATE FUNCTION dbo.zakaza_1 (@InEmpID INTEGER) RETURNS @retFindReports TABLE ( id_zakaz CHAR(10) PRIMARY KEY NOT NULL, id_mebel CHAR(10) NULL, name_mebel nvarchar(50) NOT NULL, kol_vo CHAR(50) NULL, name_klienta nvarchar(50)NULL, name_sot nvarchar(50)NULL, sena_mebel money, sena_zakaz money ) AS BEGIN WITH zakaz (id_zakaz, id_mebel, name_mebel, kol_vo, name_klienta, name_sot, sena_mebel, sena_zakaz) AS (UPDATE zakaz SET sena_zakaz = mebel.sena_mebel*zakaz.kol_vo FROM zakaz JOIN mebel ON zakaz.id_mebel = zakaz.id_mebel ) INSERT @retFindReports SELECT id_zakaz, id_mebel, name_mebel, kol_vo, name_klienta, name_sot, sena_mebel, sena_zakaz FROM zakaz RETURN END;
Добавление результата запроса в таблицу
Каким образом можно добавить результат данного запроса в таблицу?
SELECT `class`, `discipline`, SUM(IF(`type`='Лабораторная', `count_students`, 0)) AS `count_students`, SUM(IF(`type`='Лекция', `count_hours`, 0)) AS `lection`, SUM(IF(`type`='Семинар', `count_hours`, 0)) AS `seminar`, SUM(IF(`type`='Лабораторная', `count_hours`, 0)) AS `lab`, SUM(`type`='Лекция') AS `groups`, SUM(`type`='Лабораторная') AS `subgroups`, count('id') AS `numbe`, `course_semestr`, `profile`, `id` FROM `list` GROUP BY `class`, `discipline
Создал таблицу с точно такими же названиями столбцов, и теперь нужно результат запроса сохранить в эту таблицу. Как это можно сделать через sql?
Отслеживать
задан 21 мая 2015 в 18:52
Шамиль Асланов Шамиль Асланов
126 1 1 серебряный знак 9 9 бронзовых знаков
Как в MySQL результаты запроса сохранить в новую таблицу
В MySQL в одном SQL запросе можно создать новую таблицу и сохранить в неё результаты MySQL запроса (результаты по другой таблице. Либо можно сохранить результаты поиска по таблице в другую, уже существующую таблицу.
Как в MySQL сохранить результаты MySQL запроса в новую таблицу
Используйте следующую конструкцию:
CREATE TABLE new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
CREATE TABLE `db2`.`new_table` SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Обратите внимание, что часть, которая начинается с SELECT, представляет по синтаксису обычный запрос поиска SELECT. То есть вы можете протестировать ваш запрос без создания новой таблицы:
SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
И если он сработал правильно, то добавьте этот запрос после «CREATE TABLE new_table».
Как сохранить результаты MySQL запроса с несколькими столбцами в новую таблицу
Если вы хотите, чтобы в новую таблицу было сохранено несколько столбцов, то перечислите их после SELECT:
CREATE TABLE `db2`.`new_table` SELECT `column1` , `column2` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column1` DESC;
Если вы хотите, чтобы были сохранены все столбцы, то укажите «*»:
CREATE TABLE `db2`.`new_table` SELECT * FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `id` DESC;
Как сохранить результаты MySQL запроса в новую таблицу с PRIMARY KEY
После имени новой таблицы в скобках укажите имя и свойства столбца, который должен стать PRIMARY KEY, например:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)) SELECT `column` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Вам необязательно указывать имена каждого столбца, который составит новую таблицу. Полученные с помощью запроса SELECT данные будут присоединены к таблице справа.
Как указать свойства столбцов при сохранении результатов запроса в новую таблицу
После имени новой таблицы в скобках вы можете указать свойства столбцов, используя синтаксис CREATE TABLE:
CREATE TABLE `db2`.`test` (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), KEY(title)) SELECT `title`, `link` FROM `db1`.`old_table` WHERE `body` LIKE '%search string%' ORDER BY `id` DESC;
Обратите внимание, что если полученные с помощью SELECT имена столбцов не совпадают с именами указанными в CREATE TABLE, то такие столбцы будут присоединены справа.
Как поменять имена столбцов в результатах MySQL запроса, сохраняемых в новую таблицу
С помощью ключевого слова AS вы можете поменять имя одного или нескольких столбцов.
Пример изменения имени одного столбца:
CREATE TABLE `db2`.`test` SELECT `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Пример изменения имени двух столбцов для вставки в создаваемую таблицу:
CREATE TABLE `db2`.`test` SELECT `id` AS `name`, `link` AS `megalink` FROM `db1`.`old_table` WHERE `row` LIKE '%search string%' ORDER BY `column` DESC;
Как в MySQL сохранить результаты MySQL запроса в существующую таблицу
Чтобы сохранить результаты запроса в существующую таблицу, используйте конструкцию:
INSERT INTO new_table SELECT //здесь идёт MySQL запрос (поиск по таблице)
Обратите внимание, что если вы не указываете имя столбцов, в который должны быть вставлены данные, то имена выбранных для сохранения столбцов должны совпадать в обеих таблицах.
Пример указания имени столбца в новой таблице для вставки данных:
INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Либо для изменения имени полей используйте «AS», как это показано выше.
Полезные ссылки:
- https://dev.mysql.com/doc/refman/8.0/en/ansi-diff-select-into-table.html
- https://dev.mysql.com/doc/refman/8.0/en/create-table-select.html
