Thema: Delphi Subselect in Insert

Einzelnen Beitrag anzeigen

Winned

Registriert seit: 11. Mai 2011
3 Beiträge
 
#7

AW: Subselect in Insert

  Alt 11. Mai 2011, 17:50
Danke an alle für die Antworten, war sogar eine funktionierende Lösung dabei.

@DeddyH: Deine Lösung hat leider ebenfalls "Unbekannter Fehler" ausgeworfen. Allerdings fehlte bei dir im Quellcode eben auch eine Klammer zum Schluss und ich hatte Probleme zu compilieren, solange die Funktion AnsiQuotedStr() bzw. QuotedStr() verwendet wurde.

@shmia:

Wenn du Glück hast, dann funktioniert Folgendes:
Delphi-Quellcode:
var
   sql : string;
begin
   sql := 'INSERT INTO ortsteile (ortsteil, orte_id) '+
   'VALUES(''@@@'', SELECT orte.id FROM orte WHERE orte.ort=:pOrt AND orte.plz=:pPLZ';
   sql := StringReplace(sql, '@@@', sOrtsteil, []);

   Query.SQL.Text := sql;
   Query.Parameters.ParamValues['pOrt'] := sOrt;
   Query.Parameters.ParamValues['pPLZ'] := sPLZ;
   Query.ExecSQL;
end;
PS: ahhrg, ich wollte eigentlich die Variante ohne Schlüsselwort VALUES verwenden...
Delphi-Quellcode:
   sql := 'INSERT INTO ortsteile (ortsteil, orte_id) '+
   ' SELECT ''@@@'' AS ortsteil,orte.id FROM orte WHERE orte.ort=:pOrt AND orte.plz=:pPLZ';
   sql := StringReplace(sql, '@@@', sOrtsteil, []);
Deine 2. Variante funktioniert reibungslos, aber muss man das ganze wirklich so umständlich gestalten?

Vielleicht gibts ja noch ein paar andere Ideen, wo das Problem liegen könnte oder so. Die Datentypen beider Spalten (ortsteile.orte_id und orte.id) sind jedenfalls gleich. Andernfalls bedanke ich mich schonmal für die Mühen.


mfg Winned
  Mit Zitat antworten Zitat