SQL INSERT SELECT из таблицы 2 в таблицу3

Я пытаюсь вставить идентификатор из Table1 и Table2 в Table3. Мой дизайн таблицы:

Table1:
Id_Table1
field1 etc.

Table2:
Id_Table2
field1 etc.

Table3:
Id_Table3
Id_Table1_FK
Id_Table2_FK

Я делаю это, когда сохраняю записи для Table1. Между тем у меня есть Datagridview в моей форме, которая использует comboboxcell для просмотра записей из Таблицы2. Когда я INSERT INTO Table3 ( Id_Table3 , Id_Table1 , Id_Table2 ) ВЫБОР Id_Table2 ОТ Table2 ГДЕ serial_no = "& MyDGV.CurrentRow.Cells (0) .Value.ToString ЗНАЧЕНИЯ (Id_Table3_seq.nextval, Id_Table1_seq.currval, ????) некоторые записи из Таблицы 2, оба идентификатора (Таблица 1 и Таблица 2) должны быть вставлены в Таблицу 3.

Вот мой код до сих пор (очевидно, неправильно):

INSERT INTO Table3 (Id_Table3, Id_Table1, Id_Table2) 
VALUES (Id_Table3_seq.nextval, Id_Table1_seq.currval,(
SELECT Top 1 Id_Table2 FROM Table2 WHERE serial_no='" & MyDGV.CurrentRow.Cells(0).Value.ToString & "'
))

Итак, моя проблема сводится с Id_Table2, которую нужно сначала выбрать с помощью значения Datagridview.Row, а затем результат передается как параметр в таблицу3. Какие-либо предложения ? Наверное, легкий, я просто не знаю, как начать ...

sql,vb.net,oracle11g,

1

Ответов: 2


2 принят

Если бы я правильно понял, это то, что вам нужно, может быть?

Top 1

Отредактировано: добавлено, SELECTчтобы убедиться, что подзапрос вернет только 1 набор записей. Это необязательно, если выбранное вами поле уникально.


0

Используйте значение a, SELECTкоторое возвращает постоянное значение:

INSERT INTO Table3 (Id_Table3, Id_Table1, Id_Table2) 
select Id_Table3_seq.nextval, 
       Id_Table1_seq.currval,
       Id_Table2
FROM Table2 
WHERE serial_no='" & MyDGV.CurrentRow.Cells(0).Value.ToString & "';

В общем случае вы не должны конкатенировать значения в строку SQL. Вместо этого используйте подготовленный оператор с параметрами (заполнителями) (не знаете, как это делается на VB.net)

SQL, vb.net, oracle11g,
Похожие вопросы