Ich möchte mit einer Unterabfrage aus einer anderen Tabelle einfügen Anweisung verwenden. In meinem Fall möchte ich eine Zeile von PRESENTATION
Tabelle zu AVAILABILITY
Tabelle hinzufügen.Insert-Anweisung mit Unterabfrage und zusätzliche Spalte
AVAILABILITY
Tabellenstruktur:
availableID (number, generated using sequence)
availableDay (varchar)
availableStart (varchar)
availableEnd (varchar)
lecturerID(FK) (varchar)
presentationID(FK) (number, generated using sequence)
PRESENTATION
Tabellenstruktur:
presentationID (number, generated using sequence)
presentationDay (varchar)
presentationStart (varchar)
presentationEnd (varchar)
Ich habe versucht, die Abfrage in DAO wie folgt zu konstruieren:
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);
}
Wie erwartet, es Fehler zurück
Fehler: java.sql.SQLException: Invalid column index
Also, wie kann ich einfügen mit Unterabfrage mit extra Spalte?
UPDATE: MY DAO-Codes
Haben Sie die Bindevariable zweimal angegeben? –
Beachten Sie, dass in der Unterabfrage die where-Klausel 'presentation id =?' Sollte 'presentationid =?' –
Meine schlechte .. Aber nachdem ich es ändern, treten die gleichen Fehler auf. Vielleicht sollte ich den Rest meiner DAO zeigen? – Elly