Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensätze von einer Tabelle in eine andere kopieren (https://www.delphipraxis.net/38062-datensaetze-von-einer-tabelle-eine-andere-kopieren.html)

Voltzi 14. Jan 2005 10:19


Datensätze von einer Tabelle in eine andere kopieren
 
Hallo

Habe folgendes Problem:
Ich möchte per SQL Code mehrere Datensätze von einer Tabelle in eine andere Tabelle kopieren. Ich habe zwei DateTimePicker, mit den ich den Zeitraum festlegen kann. Außerdem benutze ich ADO- Querys Nun benötige ich dafür den SQL Code. Bitte deshalb um Hilfe.

Dankeschön im voraus

MFG
Voltzi

sakura 14. Jan 2005 10:25

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Du solltest mal etwas zum Aufbau der Tabellen sagen und uns gleich verraten, um was für eine DB es sich handelt.

...:cat:...

Voltzi 14. Jan 2005 10:31

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Aufbau der Tabellen:
Die Tabellen haben jeweils eine Spalte ID als Auto_Increment, eine Spalte mit dem Datum, wann der Datensatz eingetragen wurde und noch andere Attribute. Die Datensätze aus der einen Tabelle sollen in die andere leere Tabelle kopiert werden.

Es handelt sich um eine MySQL- Datenbank, verwaltet mit phpMyAdmin.

MrSpock 14. Jan 2005 10:36

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Hallo Voltzi,

zunächst einmal herzlich willkommen im Delphi-PRAXIS Forum.

Grundsätzlich geht das mit INSERT:

SQL-Code:
INSERT INTO newTable
SELECT * FROM oldTable
WHERE (timeFrom >= :timeFrom) AND (timeBis <= :timeBis)

Jelly 14. Jan 2005 10:38

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Gibts den Befehl
SQL-Code:
select into...
bei MySQL :gruebel: Ich glaube nicht, und ich denk somit auch nicht, daß sich das Kopieren so in einem Schritt bewerkstelligen läßt.

Voltzi 14. Jan 2005 10:42

Re: Datensätze von einer Tabelle in eine andere kopieren
 
@ MrSpock
wie muss ich den SQL String jetzt richtig zusammensetzen??

einfach
Delphi-Quellcode:
Query.SQL.ADD('INSERT INTO newTable');
Query.SQL.ADD('SELECT * FROM oldTable');
funktioniert nicht wirklich.

Jelly 14. Jan 2005 10:42

Re: Datensätze von einer Tabelle in eine andere kopieren
 
:thumb: OK, der Code von MrSpock funktioniert... War mir so auch noch nicht bekannt bei MySQL

Sharky 14. Jan 2005 10:44

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Zitat:

Zitat von Voltzi
...funktioniert nicht wirklich.

Was genau funktioniert denn nicht?

MrSpock 14. Jan 2005 10:46

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Hallo Voltzi,

natürlich musst du newTable und oldTable durch die echten Namen der Tabellen ersetzen. Übrigens auch die Feldnamen timeFrom und timeBis. :mrgreen:

Jelly 14. Jan 2005 10:47

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Zitat:

Zitat von Voltzi
funktioniert nicht wirklich.

Das liegt bei dir wohl daran, daß durch ein
SQL-Code:
select *...
die ID Spalte mit berücksichtigt wird. Das klappt aber nicht weil du in der neuen Tabelle sicherlich auch einen Primärschlüssel definiert hast, und du so womöglich Probleme bekommst... Lasse also einfach die ID Spalte weg, etwa so:
SQL-Code:
insert into NewNamen (Name,Vorname)
select Name, Vorname from Namen
In Delphi führst du den Befehl dann mit
Delphi-Quellcode:
Query.ExecSQL ;
aus.

Voltzi 14. Jan 2005 11:02

Re: Datensätze von einer Tabelle in eine andere kopieren
 
@Jelly
Vielen Dank. Es funktioniert.

@All
Ein Dankeschön für diese enorme Hilfsbereitschaft.

MFG
Voltzi

Karstadt 17. Jan 2006 11:36

Re: Datensätze von einer Tabelle in eine andere kopieren
 
hallo. ich habe ein anderes Problem, habe sehr vielle Felder in einer Tabelle. Habe ein Auto_inc wert wenn ich die Tabelle kopiere

Close;
sql.Clear;
sql.Add('create table '+NeueTabelle+' as Select * from '+Altetabelle+'');
ExecSQL;

dann sind die inc werte nicht gesetz so wie die auto_inc werte. Wie kann ich das lösen?

Felder nazhal ist bei mir 30

alzaimar 17. Jan 2006 11:41

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Hi Karstadt. Mach doch einen neuen Thread auf. Die Frage von Voltzi ist beantwortet,

Karstadt 17. Jan 2006 11:49

Re: Datensätze von einer Tabelle in eine andere kopieren
 
dann kommt so was wie " Benutzer Suche, suche benutzen!!" ;)

alzaimar 17. Jan 2006 12:11

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Und? Mach doch!

shmia 17. Jan 2006 13:21

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Zitat:

Zitat von Karstadt
ich habe ein anderes Problem, habe sehr vielle Felder in einer Tabelle. Habe ein Auto_inc wert wenn ich die Tabelle kopiere
dann sind die inc werte nicht gesetz so wie die auto_inc werte.

Ganz einfach: keine Auto-Inc Felder benutzen.
Auto-Inc Felder sind im 1. Augenblick sehr bequem; auf den 2. Blick machen sie viele Probleme.
Aber das ist ein anderes Thema.

alzaimar 17. Jan 2006 13:30

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Unter MSSQL gehts so:
1. Feld von autoinc in int ändern
2. insert into NewTable select * from OldTable
3. Feld von int wieder in autoinc zurückändern.

Geht das nicht mit MySQL?

Karstadt 17. Jan 2006 13:39

Re: Datensätze von einer Tabelle in eine andere kopieren
 
jetzt kann ich das aber nicht mehr ändern. Projekt ist fast fertig.

alzaimar 17. Jan 2006 13:55

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Da wird nix geändert. Kurz autoinc wegnehmen, tabelle kopieren, autoinc wieder rein und Alles ist so wie vorher, nur das eben die Daten in der neuen Tabelle identisch (also mit autoic) mit denen der alten Tabelle sind...

Karstadt 17. Jan 2006 14:30

Re: Datensätze von einer Tabelle in eine andere kopieren
 
Zitat:

Da wird nix geändert. Kurz autoinc wegnehmen, tabelle kopieren, autoinc wieder rein und Alles ist so wie vorher, nur das eben die Daten in der neuen Tabelle identisch (also mit autoic) mit denen der alten Tabelle sind...
Wie kann ich per SQL realiesieren ? "autoinc wieder rein"?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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 by Thomas Breitkreuz