Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
1
SQLite

Вставка данных в таблицу с полями из другой таблицы

08.11.2018, 01:46. Показов 4272. Ответов 6

Author24 — интернет-сервис помощи студентам
Есть две таблицы.
table1
IdField1Field2
1  
2  
3  

table2
IdSomeFieldTable1Id
1  
2  
3  
Вторая связана с первой по внешнему ключу Table1Id. Можно ли объединить два запроса в один. А именно:
выборку значения из первой таблицы. Значение будет одно, т.к. поле Field2 уникально.
SQL
1
SELECT Id FROM table1 WHERE Field2=@field2value
и вставку во вторую таблицу
SQL
1
INSERT INTO table2('SomeField','Table1Id') VALUES (@someField,@Id_выбранный_из_первой_таблицы)
Сорри за корявость формулировки, но пока что более внятно изложить не могу
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2018, 01:46
Ответы с готовыми решениями:

Вставка части таблицы из одной БД в таблицу такой же структуры другой БД?
Мне нужно выбрать из таблицы первой БД записи, у которых id (ключ) больше определенного числа, а ...

Вставка в таблицу данных из другой программы и переменных одновременно c++ builder
Собственно, имеется таблица(table1) с 4мя столбцами, в нее нужно вставить строку, в которой два...

Сформировать таблицу из данных другой таблицы
Доброго времени суток! Вот такая хитрая задачка встала - в таблице Ballance есть поля: No...

Запрос в таблицу на основании данных из другой таблицы
$result = mysqli_query($connection, "SELECT * FROM `cs_constr` WHERE name= (`name_constr` FROM...

6
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
08.11.2018, 06:54 2
Лучший ответ Сообщение было отмечено ViterAlex как решение

Решение

Цитата Сообщение от ViterAlex Посмотреть сообщение
Вторая связана с первой по внешнему ключу Table1Id
Вот тут не совсем догнал каким образом происходит связь.
Так:
SQL
1
INSERT INTO table2('SomeField','Table1Id') VALUES (@someField,@Table1Id= (SELECT Id FROM table1 WHERE Field2=@field2value))
Либо так:
SQL
1
INSERT INTO table2('SomeField','Table1Id') VALUES (@someField,@Table1Id= (SELECT TOP 1 Id FROM table1 WHERE Field2=@field2value))
не пробовали?

З. Ы. я такую конструкцию использовал при update может и тут прокатит
1
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
08.11.2018, 09:22 3
Существует конструкция INSERT ... SELECT
SQL
1
2
3
4
INSERT INTO tab2(fld2_1, fld2_2)
SELECT fld1_1, fld1_2
FROM tab1
WHERE ...
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.11.2018, 10:11  [ТС] 4
Grossmeister, но тут, насколько я понимаю, вставляются все поля из селекта. А мне нужно из селекта только одно поле, а остальные я задам параметрами запроса. Вариант Aferuga мне представляется именно тем, что нужно. Но раньше вечера не смогу попробовать.
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
08.11.2018, 10:43 5
Цитата Сообщение от ViterAlex Посмотреть сообщение
тут, насколько я понимаю, вставляются все поля из селекта
В любом SELECT к полям можно добавить еще что-то, например
SQL
1
2
SELECT fld1, fld2, '1' AS name
...
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.11.2018, 15:32  [ТС] 6
Grossmeister, такие таблицы:
SQL
1
2
3
4
5
6
7
CREATE TABLE `Podcasts` (
    `Id`    INTEGER NOT NULL UNIQUE,
    `Title` TEXT NOT NULL,
    `Url`   TEXT NOT NULL UNIQUE,
    `Archived`  INTEGER DEFAULT 0,
    PRIMARY KEY(`Id`)
);
И вторая
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE `Issues` (
    `Id`    INTEGER NOT NULL UNIQUE,
    `Title` TEXT NOT NULL,
    `Url`   TEXT UNIQUE,
    `DateTime`  INTEGER,
    `Duration`  INTEGER,
    `Guests`    TEXT,
    `Size`  REAL,
    `PodcastId` INTEGER,
    `FileId`    INTEGER,
    FOREIGN KEY(`FileId`) REFERENCES `Files`(`Id`) ON DELETE CASCADE,
    FOREIGN KEY(`PodcastId`) REFERENCES `Podcasts`(`Id`) ON DELETE CASCADE,
    PRIMARY KEY(`Id`)
);
Как вставить строку, указав PodcastId по селекту из Podcasts?
И да. Я пометку у темы ставил, но речь идёт про sqlite
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
09.11.2018, 16:09  [ТС] 7
Aferuga, твой вариант работает как я и ожидал. Спасибо
0
09.11.2018, 16:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2018, 16:09
Помогаю со студенческими работами здесь

Двойная связь 1 поля таблицы с 2 полями из другой таблицы
в продолжение темы:https://www.cyberforum.ru/ms-access/thread1032853.html есть таблица Название...

Сохранение данных в таблицу, при заполнении другой таблицы
Доброго времени суток!!! Подскажите пожалуйста как в Access 2007 сделать следующее: 1. есть...

Связь одного поля таблицы с двумя полями другой
Подскажите пожалуйста. Есть две таблицы "Частота" и "Позывной", в таблице "Частота" есть поля...

Обновить поля одной таблицы - полями другой используя триггер
Привет всем. В общем задача такая - вставить или обновить с помощью триггера 2 поля book_price,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru