Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [SQL]: Statement mit INSERT INTO... VALUES...und Left Join (https://www.delphipraxis.net/187720-%5Bsql%5D-statement-mit-insert-into-values-und-left-join.html)

juergen 26. Dez 2015 14:44

Datenbank: MSSQL • Version: 2008 • Zugriff über: AnyDAC

[SQL]: Statement mit INSERT INTO... VALUES...und Left Join
 
Hallo zusammen und ein Frohes Weihnachtsfest!:xmas:

Ich versuche mich an einem SQL Statement wo Datensätze eingefügt werden sollen, einmal aus variablen Werten die aus keiner Tabelle kommen UND mit Werten aus einer anderen Tabelle.

Im Prinzip sowas:
Code:
INSERT INTO Adressstamm (Name, Strasse, Ort, PLZ, Rec_ID_X1, Rec_ID_X2)
VALUES ('Mustermann', 'Spielstr. 5', 'Musterstadt', 12345, 17, 25)
Die Werte "Rec_ID_X1" und "Rec_ID_X2" kommen aus einer anderen Tabelle die *jeweils* über ein Left Join abgefragt werden muss:
Code:
Left JOIN Personalstamm as P1 on Adresstamm.Rec_ID_X1 = P1.Identifikation,
Left JOIN Personalstamm as P2 on Adresstamm.Rec_ID_X2 = P2.Identifikation
Wie muss die INSERT INTO-Anweisung aufgebaut werden, so dass die variablen Werte gesetzt werden können *und* die beiden Werten aus der Tabelle Personalstamm?

Ich hoffe ich konnte mich halbwegs verständlich ausdrücken.
Schon mal eine Danke vorab für eure Unterstützung!

mkinzler 26. Dez 2015 15:07

AW: [SQL]: Statement mit INSERT INTO... VALUES...und Left Join
 
Grundsätzlich würde ich (SQL-)Parameter verwenden.

Zudem würde ich versuchen die Abfrage mit ins Statement zu integrieren. Da der angegebene Join aber auf eine Bezeihung in die umgekehrte Richtung hin, deshalb wüsste ich nicht, wie man diesen in dieses Statement integrieren sollte.

haentschman 26. Dez 2015 15:33

AW: [SQL]: Statement mit INSERT INTO... VALUES...und Left Join
 
Moin...8-)
Wie wäre es mit einem Subselect mit Parametern?
Code:
INSERT INTO Adressstamm (Name, Strasse, Ort, PLZ, Rec_ID_X1, Rec_ID_X2)
VALUES ('Mustermann', 'Spielstr. 5', 'Musterstadt', 12345, (select idx1 from blubb where id = :bl), (select idx2 from bla where id = :ba))
Parameter im gesamten Statement sind, wie schon gesagt, wichtig. :thumb:
Zu erwähnen sei noch, das die subselects nur einen einzigen Datensatz liefern dürfen, sonst gibt es Fehler.

mikhal 26. Dez 2015 17:11

AW: [SQL]: Statement mit INSERT INTO... VALUES...und Left Join
 
Oder statt Subselect mit einer Datenbankfunktion, in der ein Cursor den gewünschten Wert liefert.

Grüße
Mikhal

juergen 26. Dez 2015 17:24

AW: [SQL]: Statement mit INSERT INTO... VALUES...und Left Join
 
Hallo,

manchmal tut eine Pause ganz gut...
Ich habe nun eine (richtigere) Lösung gefunden, indem ich ein schon vorhandenes Dataset (Datasource einer Query) um die benötigten beiden Felder erweitert habe. Das Dataset kann ich abfragen und in den beiden Values von INSERT INTO einfügen.
Nun funktioniert alles.

Vielen Dank und noch schöne Weihnachten/ Wochenende! :dp:


Edit: Die Hinweise auf Parameter-Verwendung habe ich verstanden und wende diese i.d.R. auch an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz