![]() |
Datenbank: Firebird • Version: 2.5.4 • Zugriff über: IBO
Insert mit Where Klausel
Hallo SQL Spezis,
gibt es eine Möglichkeit im insert Statement mit einer Where Klausel zu arbeiten. z.B. where Versicherernr in (20....86) insert into TBL_KETTEN (VERSICHERERNR, KETTENNAME, FAVORIT, ANLAGE, ANLAGEBENUTZER) Values (:VERSICHERERNR, :KETTENNAME, :FAVORIT, :ANLAGE, :ANLAGEBENUTZER) Ich möchte in der TBL_KETTEN neue Datensätze einfügen wobei die VERSICERERNR unterschiedlich ist z.B. 20,21,22,23,24,25,26,72,73,74,75,76,77,78,79,80,81 ,82,83,84,85,86. Ich muss pro VERSICHERERNR 106 Datensätze einfügen und wollte nicht so viele Statement schreiben. |
AW: Insert mit Where Klausel
Wie wäre es mit einer Schleife?
|
AW: Insert mit Where Klausel
Am Besten als parametrisierte Abfrage in einer Schleife
SQL-Code:
insert into TBL_KETTEN (VERSICHERERNR, KETTENNAME, FAVORIT, ANLAGE, ANLAGEBENUTZER)
Values (:VERSICHERERNR, :KETTENNAME, :FAVORIT, :ANLAGE, :ANLAGEBENUTZER);
Delphi-Quellcode:
sl: TStrings;
i: Integer; ... sl := TStringList.Create; Query.ParamByName('KETTENNAME').Value := <Kettenname>'; ... // Alle Felder aus VERSICHERERNR sl.CommaText := '20,21,22,23,24,25,26,72,73,74,75,76,77,78,79,80,81,82,83,84,85,8'; for i := 0 to sl.Count-1 do begin Query.ParamByName('VERSICHERERNR').asString := sl[i]; Query.ExecSQL; end; |
AW: Insert mit Where Klausel
Ob das mit Firebird jetzt geht, kann ich nicht sagen, generell überträgt man zunächst die sich immer wiederholdenen Daten in eine temporäre Tabelle und baut sich dann daraus ein INSERT-SELECT-Statement.
SQL-Code:
Jetzt die Daten in diese Tabelle füllen (per Schleife)
CREATE TEMPORARY TABLE VN
( VERSICHERERNR INT );
SQL-Code:
und dann die restlichen Daten in einem Rutsch
INSERT INTO VN ( VERSICHERERNR )
VALUES ( :VERSICHERERNR );
SQL-Code:
Damit habe ich den geringsten Traffic erzeugt
insert into TBL_KETTEN (VERSICHERERNR, KETTENNAME, FAVORIT, ANLAGE, ANLAGEBENUTZER)
SELECT VN.VERSICHERERNR, :KETTENNAME, :FAVORIT, :ANLAGE, :ANLAGEBENUTZER FROM VN |
AW: Insert mit Where Klausel
Danke,
habe es mit der Schleife gelöst. |
AW: Insert mit Where Klausel
Schade, da war mein Nachbar schneller ....
ggf. kommst Du auch ohne Temporäre Tabelle aus, wenn Du die benötigten Versicherernr bereits über ein Select-Statement ermitteln kannst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz