Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Prism Datensätze aus einer Tabelle in eine andere einfügen? (https://www.delphipraxis.net/89752-datensaetze-aus-einer-tabelle-eine-andere-einfuegen.html)

Alexander 5. Apr 2007 09:47

Datenbank: MySQL • Version: 3.28 • Zugriff über: ADO.NET

Datensätze aus einer Tabelle in eine andere einfügen?
 
Hallo DB-Gurus :),
ich habe hier 2 Tabellen (MySQL), in der einen stehen Datensätze, die ich alle in eine andere Tabelle einfügen möchte (zumindest einige Spalten).
Die zweite Tabelle hat auch noch eine Spalte mehr, die dann auch noch mit einem Standardwert, der sich aber je nach Kopiervorgang
ändert, befüllt werden muss.

Der Zugriff erfolgt über ADO.NET mit dem MySQL Provider, aber das ist ja mehr oder weniger wurscht. Ist ja eine generelle SQL-Frage.

Ist das in einem Statement zu machen?
So in der Art vielleicht:
SQL-Code:
INSERT INTO GroupSettings (`OptID`, `Value`) VALUES (SELECT `OptID`, `Value` FROM Settings)
Nur dass, dann noch die fehlende Spalte auch noch ergänzt werden müsste.

Oder muss ich die zu kopierenden Daten erst vom Server holen, in meinem Programm verarbeiten und dann wieder einfügen? Das wäre ja nicht das Problem, nur erstens wird das sicherlich langsamer sein und zweitens ist es mehr Tipparbeit :mrgreen:.

Danke :)

joachimd 5. Apr 2007 10:21

Re: Datensätze aus einer Tabelle in eine andere einfügen?
 
Zitat:

Zitat von Alexander
SQL-Code:
INSERT INTO GroupSettings (`OptID`, `Value`) VALUES (SELECT `OptID`, `Value` FROM Settings)

SQL-Code:
insert into groupsettings(optid,value) select optid,value from settings [where...]
müsste selbst mit MySQL gehen.

Alexander 5. Apr 2007 10:31

Re: Datensätze aus einer Tabelle in eine andere einfügen?
 
Okay, ohne Values :).
Aber wie mache ich das mit der zusätzlichen Spalten in der neuen Tabelle? Groupsettings hat nämlich noch GroupID als Spalte.
Da soll z.B. eine 1 rein.
Kann man das auch noch mit reinkriegen? Sonst setze ich das mit nem zweiten Statement richtig.

joachimd 5. Apr 2007 10:36

Re: Datensätze aus einer Tabelle in eine andere einfügen?
 
Einfach mit einer Konstante in der Select-Abfrage:

SQL-Code:
insert into groupsettings(optid, value, groupid) select optid, value, 1 from settings [where...]

Alexander 5. Apr 2007 12:12

Re: Datensätze aus einer Tabelle in eine andere einfügen?
 
Cool. Danke für den Tipp. Hätte ich auch selber drauf kommen können.

Alexander 5. Apr 2007 13:26

Re: Datensätze aus einer Tabelle in eine andere einfügen?
 
Wollte es gerade einbauen, dabei ist noch eine Frage entstanden...

Man kann ja auch mehrere Datensätze auf einmal einfügen:
SQL-Code:
INSERT INTO GroupSettings (`OptID`, `Value`) VALUES ('', '', ''), ('', '', '')
Ist das auch mit der von dir gezeigten Variante möglich?
Sprich so:
SQL-Code:
insert into groupsettings(optid,value) (select optid,value,2 from settings AND select optid,value,3 from settings )
Man müsste irgendwie die Ergebnisse beider Select Statements verbinden. Ein Join ist ja nicht, was dann?
Das ist doch bestimmt auch möglich, oder?

joachimd 5. Apr 2007 13:31

Re: Datensätze aus einer Tabelle in eine andere einfügen?
 
mehrere result sets verbindet man mit UNION
SQL-Code:
insert into groupsettings(optid,value) (select optid,value,2 from settings union select optid,value,3 from settings )

Alexander 5. Apr 2007 15:15

Re: Datensätze aus einer Tabelle in eine andere einfügen?
 
Natürlich Unions :wall:
Danke ;)


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