Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL einfügen mit select (https://www.delphipraxis.net/115517-sql-einfuegen-mit-select.html)

Privateer3000 13. Jun 2008 10:19

Datenbank: mdb • Zugriff über: ado

SQL einfügen mit select
 
Hallo,
ich möchte in tabelle 1 werte einfügen die
aus tabelle 2 genommen werden sollen.
Hinzu kommen aber noch andere variablen.
Also kein direktes copy.
Wäre das mit dieser Überlegung möglich?

Delphi-Quellcode:
Datensatz für Select: id1
INSERT INTO tabelle1 (f11,f12,f13,f14...)
       SELECT f21,f22 FROM tabelle2 WHERE id=id1
           VALUES (:IN1,:IN2,:IN3,:IN4)
param...IN1:=edit.text
param...IN2:=f21
...
Leider hab ich nicht wirklich eine Idee, wie das gehen könnte.
Oder ist dies so nicht üblich und ich bin auf dem Holzweg zum Teich?

Grüße

DeddyH 13. Jun 2008 10:22

Re: SQL einfügen mit select
 
Also, etwas in der Art
SQL-Code:
INSERT INTO Tabelle2(Wert1, Wert2)
  SELECT Wert1, Wert2 FROM Tabelle1
  WHERE ID=1000
sollte schon gehen. Nur, was die VALUES sollen, hab ich nicht verstanden.

mkinzler 13. Jun 2008 10:30

Re: SQL einfügen mit select
 
Er will ausser den Daten aus dem select in einem Rutsch weitere Werte einfügen.
Das wird so nicht gehen. Man könnte versuchen die Werte als Konstanten in den Select einzubauen.

user0815 13. Jun 2008 10:40

Re: SQL einfügen mit select
 
Wenn ich es richtig verstehe dann geht das ganze doch so:

Delphi-Quellcode:
var
  Wert1, Wert2, Wert3 : String;
  a : Integer;
begin
  a := 0;

  with FormDatenmodul.qSQL do
  begin
    close;
    with SQL do
    begin
      clear;
      Add('SELECT x,y,z');
      Add('FROM TABELLE_A');
      Add('WHERE x = 4;');
    end;
    open;
    while not EOF do
    begin
      Wert1 := FieldByname('x').asString;
      Wert2 := FieldByname('y').asString;
      Wert3 := FieldByname('z').asString;

      inc(a);

      with FormDatenmodul.qEINFUEGEN do
      begin
        close;
        with SQL do
        begin
          clear;
          Add('INSERT INTO TABELLE_B');
          Add('(a, b, c, d)');
          Add('VALUES(');
          Add('"'+ Wert1 +'",');
          Add('"'+ Wert2 +'",');
          Add('"'+ Wert3 +'",');
          Add('"'+ IntToStr(a) +'"');
          Add(');');
        end;
        ExecSQL;
        close;
      end;

      next;
    end;
  end;
/ungetestet

mkinzler 13. Jun 2008 10:42

Re: SQL einfügen mit select
 
Er wollte dies aber in einer SQL-Abfrage machen.

Privateer3000 13. Jun 2008 10:44

Re: SQL einfügen mit select
 
Zitat:

Zitat von mkinzler
Er will ausser den Daten aus dem select in einem Rutsch weitere Werte einfügen.
Das wird so nicht gehen. Man könnte versuchen die Werte als Konstanten in den Select einzubauen.

Genau
Ich dachte es mir schon, also werde ich erst die Daten holen und dann einfügen
Schade, wäre auch zu einfach gewesen :D

Danke an alle

Privateer3000 13. Jun 2008 10:46

Re: SQL einfügen mit select
 
Zitat:

Zitat von DeddyH
Also, etwas in der Art
SQL-Code:
INSERT INTO Tabelle2(Wert1, Wert2)
  SELECT Wert1, Wert2 FROM Tabelle1
  WHERE ID=1000
sollte schon gehen. Nur, was die VALUES sollen, hab ich nicht verstanden.

Aus diesem Grund schrieb ich ja: kein direktes copy

DeddyH 13. Jun 2008 10:47

Re: SQL einfügen mit select
 
Moment, wirf die Flinte nicht zu schnell ins Korn. Ich habe das nicht ausprobieren können, aber versuch es mal so:
SQL-Code:
INSERT INTO Tabelle2(Wert1, Wert2, Wert3, Wert4)
  SELECT Wert1, Wert2, :Param1 AS Wert3, :Param2 AS Wert4 
  FROM Tabelle1
  WHERE ID=1000

Privateer3000 13. Jun 2008 14:22

Re: SQL einfügen mit select
 
Das werde ich mal probieren
sage dan an dieser stelle bescheid

wird aber erst morgen wieder

danke!

alzaimar 13. Jun 2008 15:12

Re: SQL einfügen mit select
 
Das sollte funktionieren. Wies auch nict :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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