Я хочу использовать инструкцию insert с подзапросом select из другой таблицы. В моем случае я хочу добавить строку из таблицы PRESENTATION
в таблицу AVAILABILITY
.Вставить инструкцию с подзапросом и дополнительным столбцом
AVAILABILITY
структура таблицы:
availableID (number, generated using sequence)
availableDay (varchar)
availableStart (varchar)
availableEnd (varchar)
lecturerID(FK) (varchar)
presentationID(FK) (number, generated using sequence)
PRESENTATION
структура таблицы:
presentationID (number, generated using sequence)
presentationDay (varchar)
presentationStart (varchar)
presentationEnd (varchar)
Я пытался построить запрос в DAO, как это:
String lecturerID = Abean.getLecturerID();
String availableDay = Abean.getAvailableDay();
String availableStart = Abean.getAvailableStart();
String availableEnd = Abean.getAvailableEnd();
Date availableDate = Abean.getAvailableDate();
String presentationID = Abean.getPresentationID();
try{
currentCon = JavaConnectionDB.getConnection();
PreparedStatement ps=currentCon.prepareStatement("
insert into availability (availableID,
lecturerID,
availableDay,
availableStart,
availableEnd,
presentationid)
select(availabilityseq.nextval,
?,
presentationDay,
presentationStart,
presentationEnd,
presentationid)
from presentation where presentationid=?
");
ps.setString(1,Abean.getLecturerID());
ps.setString(2,Abean.getAvailableDay());
ps.setString(3,Abean.getAvailableStart());
ps.setString(4,Abean.getAvailableEnd());
ps.setString(5,Abean.getPresentationID());
// ps.setString(6,Abean.getAvailableID());
ps.executeUpdate();
}
catch(Exception e){
System.out.println("add availability 2 failed: An Exception has occurred! " + e);
}
Как и ожидалось, он вернет ошибку
ОШИБКА: java.sql.SQLException: Invalid column index
Итак, как я могу вставить с подзапросом с дополнительной колонкой?
UPDATE: МОЯ DAO коды
Вы указали переменную связывания дважды? –
Обратите внимание, что в подзапросе предложение where: 'presentation id =?' Должно быть 'presentationid =?' –
Мой плохой. Но после того, как я его сменил, произошла такая же ошибка. Может быть, я должен показать остальную часть моего DAO? – Elly