AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensätze in die gleiche Tabelle kopieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze in die gleiche Tabelle kopieren?

Ein Thema von prelude247 · begonnen am 1. Aug 2005 · letzter Beitrag vom 17. Jan 2007
Antwort Antwort
Seite 1 von 3  1 23      
prelude247

Registriert seit: 1. Aug 2005
28 Beiträge
 
Delphi 7 Enterprise
 
#1

Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 13:35
Datenbank: Sybase Adaptive Server Anywhere Database Engine • Version: 8.0.2.4392 • Zugriff über: ODBC
Hi!

Wie kann man komplette Datensätze in einer Tabelle kopieren ohne den kompletten Inhalt vorher auf Variablen zu speichern?

Ich habe schon versucht die Tabelle 2 mal zu öffnen und dann die aus der einen in die andere zu kopieren, aber das will nicht so recht funktionieren.

Bin für jeden Gedankenanstoß dankbar..

MfG
Prelude247
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 13:47
Hallo und herzlich willkommen in der Delphi-PRAXiS.

Datensätze kopieren kannst du mit SQL:

INSERT INTO table (field1, field2) SELECT field1, field2 FROM table WHERE condition Kann sein, dass du die genaue Beschreibung der Syntax in deiner Dokumentation nachschlagen musst.

Grüße vom marabu

SQL-Statement korrigiert nach Hinweis von Flocke
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 13:50
SQL-Code:
INSERT INTO table (field1, field2)
SELECT field1, field2 FROM table
WHERE condition
Das VALUES muss man weglassen. Außerdem kannst du in der SELECT-Liste auch andere Werte einfügen, z.B. aus mit JOIN hinzugenommenen Tabellen, oder auch Konstanten.
Volker
  Mit Zitat antworten Zitat
prelude247

Registriert seit: 1. Aug 2005
28 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 13:56
Danke für die schnelle Antwort!

Das mit dem SQL ist so 'ne Sache, da die Tabelle in der ich kopieren will aus fast 40 Feldern besteht.
Ich dachte eher an eine Art Anweisung

Code:
Table1:=Table2;
Gibt es keine andere Möglichkeit

MfG
prelude247
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 14:02
Hätte ich mich selbst zitiert, dann wäre mir das mit den VALUES nicht schon wieder passiert...

Natürlich kannst du die vereinfachte Syntax verwenden - wenn du keine Probleme mit UNIQUE Klauseln hast:

INSERT INTO table SELECT * FROM table WHERE condition marabu
  Mit Zitat antworten Zitat
prelude247

Registriert seit: 1. Aug 2005
28 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 15:49
Habe nun versucht eine SQL-Anweisung zu erstellen um einen Datensatz zu kopieren.

Bei der Ausführung erhalte ich folgenden Fehler:

"Unterabfrage nur in einem Element der Auswahlliste zulässig."

SQL-Code:
INSERT INTO ARTIKELSTAMM
(
ArtiStammId, ArtiStamBezeich, ArtiStamNummer, EKZ_Nummer,
ArtGrNummer, ArtiFolgeTyp, ArtiInfoGruppe,
ArtiPoolNummer, ArtiStamAuspr, ArtiStamBPoolKum,
ArtiStamBeaKennz, ArtiStamBrutGew, ArtiStamEAN,
ArtiStamEKDKennz, ArtiStamGewicht, ArtiStamGrundArt,
ArtiStamLPreVari, ArtiStamLoeKennz, ArtiStamMatch,
ArtiStamMxErntMg, ArtiStamOPreisSp, ArtiStamOPreisWa,
ArtiStamPackBrei, ArtiStamPackHoe, ArtiStamPackLae,
ArtiStamPrAzGrMe, ArtiStamPrAzMeBz, ArtiStamPrEinhEK,
ArtiStamPrEinhVK, ArtiStamPreVari, ArtiStamRundBest,
ArtiStamRundEK, ArtiStamRundVK, ArtiStamSaatTyp,
ArtiStamTyp, ArtiStamUPreisSp, ArtiStamUPreisWa,
ArtiStamVKDKennz, ArtiStamVerpGew, ArtiStamVolumen,
ArtiStamXPrEinsp, ArtiStamZulBDat, ArtiStammIdEkGrp,
ArtiStammImage, DSD_MatGrNummer, DSD_VolGrNummer,
FilTransfer, ME_GrupNummer, ME_NummerVerpGew,
PrKalkSchema, PreisMatNummerEK, PreisMatNummerVK,
Reinheitsgrad, SaatFruNummer, SaatSortNummer,
SteuerSchluessel, VerpackGruppe, WaGruNummer, artiStamPrAzUFak
)
VALUES (
17134,'Absperrventil Form A','999910',70,
(
SELECT
ArtGrNummer, ArtiFolgeTyp, ArtiInfoGruppe,
ArtiPoolNummer, ArtiStamAuspr, ArtiStamBPoolKum,
ArtiStamBeaKennz, ArtiStamBrutGew, ArtiStamEAN,
ArtiStamEKDKennz, ArtiStamGewicht, ArtiStamGrundArt,
ArtiStamLPreVari, ArtiStamLoeKennz, ArtiStamMatch,
ArtiStamMxErntMg, ArtiStamOPreisSp, ArtiStamOPreisWa,
ArtiStamPackBrei, ArtiStamPackHoe, ArtiStamPackLae,
ArtiStamPrAzGrMe, ArtiStamPrAzMeBz, ArtiStamPrEinhEK,
ArtiStamPrEinhVK, ArtiStamPreVari, ArtiStamRundBest,
ArtiStamRundEK, ArtiStamRundVK, ArtiStamSaatTyp,
ArtiStamTyp, ArtiStamUPreisSp, ArtiStamUPreisWa,
ArtiStamVKDKennz, ArtiStamVerpGew, ArtiStamVolumen,
ArtiStamXPrEinsp, ArtiStamZulBDat, ArtiStammIdEkGrp,
ArtiStammImage, DSD_MatGrNummer, DSD_VolGrNummer,
FilTransfer, ME_GrupNummer, ME_NummerVerpGew,
PrKalkSchema, PreisMatNummerEK, PreisMatNummerVK,
Reinheitsgrad, SaatFruNummer, SaatSortNummer,
SteuerSchluessel, VerpackGruppe, WaGruNummer, artiStamPrAzUFak
FROM ArtikelStamm
WHERE ArtikelStammID=551
))
Ich bin bald am verzweifeln, denn ich finde den Fehler nicht.

MfG
Prelude247
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 16:19
Du darst VALUES und SELECT nicht mischen, aber du kannst die Konstanten in die SELECT-Abfrage mit einbauen:
SQL-Code:
INSERT INTO ARTIKELSTAMM
(
ArtiStammId, ArtiStamBezeich, ArtiStamNummer, EKZ_Nummer,
ArtGrNummer, ArtiFolgeTyp, ArtiInfoGruppe,
ArtiPoolNummer, ArtiStamAuspr, ArtiStamBPoolKum,
ArtiStamBeaKennz, ArtiStamBrutGew, ArtiStamEAN,
ArtiStamEKDKennz, ArtiStamGewicht, ArtiStamGrundArt,
ArtiStamLPreVari, ArtiStamLoeKennz, ArtiStamMatch,
ArtiStamMxErntMg, ArtiStamOPreisSp, ArtiStamOPreisWa,
ArtiStamPackBrei, ArtiStamPackHoe, ArtiStamPackLae,
ArtiStamPrAzGrMe, ArtiStamPrAzMeBz, ArtiStamPrEinhEK,
ArtiStamPrEinhVK, ArtiStamPreVari, ArtiStamRundBest,
ArtiStamRundEK, ArtiStamRundVK, ArtiStamSaatTyp,
ArtiStamTyp, ArtiStamUPreisSp, ArtiStamUPreisWa,
ArtiStamVKDKennz, ArtiStamVerpGew, ArtiStamVolumen,
ArtiStamXPrEinsp, ArtiStamZulBDat, ArtiStammIdEkGrp,
ArtiStammImage, DSD_MatGrNummer, DSD_VolGrNummer,
FilTransfer, ME_GrupNummer, ME_NummerVerpGew,
PrKalkSchema, PreisMatNummerEK, PreisMatNummerVK,
Reinheitsgrad, SaatFruNummer, SaatSortNummer,
SteuerSchluessel, VerpackGruppe, WaGruNummer, artiStamPrAzUFak
)
SELECT 17134,'Absperrventil Form A','999910',70,
ArtGrNummer, ArtiFolgeTyp, ArtiInfoGruppe,
ArtiPoolNummer, ArtiStamAuspr, ArtiStamBPoolKum,
ArtiStamBeaKennz, ArtiStamBrutGew, ArtiStamEAN,
ArtiStamEKDKennz, ArtiStamGewicht, ArtiStamGrundArt,
ArtiStamLPreVari, ArtiStamLoeKennz, ArtiStamMatch,
ArtiStamMxErntMg, ArtiStamOPreisSp, ArtiStamOPreisWa,
ArtiStamPackBrei, ArtiStamPackHoe, ArtiStamPackLae,
ArtiStamPrAzGrMe, ArtiStamPrAzMeBz, ArtiStamPrEinhEK,
ArtiStamPrEinhVK, ArtiStamPreVari, ArtiStamRundBest,
ArtiStamRundEK, ArtiStamRundVK, ArtiStamSaatTyp,
ArtiStamTyp, ArtiStamUPreisSp, ArtiStamUPreisWa,
ArtiStamVKDKennz, ArtiStamVerpGew, ArtiStamVolumen,
ArtiStamXPrEinsp, ArtiStamZulBDat, ArtiStammIdEkGrp,
ArtiStammImage, DSD_MatGrNummer, DSD_VolGrNummer,
FilTransfer, ME_GrupNummer, ME_NummerVerpGew,
PrKalkSchema, PreisMatNummerEK, PreisMatNummerVK,
Reinheitsgrad, SaatFruNummer, SaatSortNummer,
SteuerSchluessel, VerpackGruppe, WaGruNummer, artiStamPrAzUFak
FROM ArtikelStamm
WHERE ArtikelStammID=551
[Nachtrag]
Wenn ArtikelStammId eine Auto-Id ist, dann solltest du sie beim INSERT weglassen (und unten natürlich nicht mit angeben).
Volker
  Mit Zitat antworten Zitat
WoGe

Registriert seit: 16. Jun 2005
Ort: Kelkheim
178 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 16:22
Hallo,

wie Flocke schon geschrieben hat, musst du das Values weglassen

Die folgend SP hab ich mal für FB1.0 gemacht, ich hoffe das funzt auch mit deinem Server:

SQL-Code:
ALTER PROCEDURE SP_COPYZEILEN (
    ID_ZIEL INTEGER,
    ID_QUELLE INTEGER)
AS
begin
  Insert into Zeilen
  select null, -999, ZEILENNO, ANZAHL, DATUM, BESCHREIBUNG, EPREIS, GPREIS, WAEHRUNG
  FROM ZEILEN
  where F_AR = :id_quelle;
  Update zeilen
  set F_Ar = :id_ziel
  where F_AR = -999;
  suspend;
end
Wie man sieht stammen die Werte der 2 ersten Spalten nicht aus der Ursprungstabelle.

PS.: Wenn ich mir den SQl-Code von meiner SP so angucke: Das ist doch fürchterlich unelegant. Das müsste doch eigentlich besser gehen. Hat dazu jemand mal eine Idee?

Roter Kasten. Flocke war schneller


mfg
wo
  Mit Zitat antworten Zitat
prelude247

Registriert seit: 1. Aug 2005
28 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 1. Aug 2005, 16:43
Es funktioniert!

Danke euch beiden für die schnelle Hilfe!

Der Feierabend ist gerettet!

MfG
Prelude247
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Datensätze in die gleiche Tabelle kopieren?

  Alt 15. Jan 2007, 22:42
Hallo zusammen !!

Sorry, daß ich diesen Beitrag nochmal hochhole aber hat jemand eine Idee warum das beschriebene Verfahren mit der BDE und Paradox nicht funktioniert. Laut LocalSQL-Help sollte es funktionieren.
Folgendes führt zur Meldung "Keine Übereinstimmung der Typen im Ausdruck." Die CAST's hab ich erst nach diesem Fehler eingebaut. Leider keine Wirkung !!
FLAECHE und TERMIN sind der Primärschlüssel, die Reihenfolge der Felder stimmt. Ich hab auch schon die Zielfelder aufgezählt. Aber ohne Erfolg.

Delphi-Quellcode:
  SQL.Clear;
  SQL.Add ('Insert Into Haustemperatur Select Flaeche,Cast((Termin+:ZeitWert) as DATE),Cast((Jahr+:Diff) as INTEGER),0, Temp_Tag,Temp_Nacht,0 from HausTemperatur where Jahr='+IntToStr(JahrSource));
  ParamByName ('Zeitwert').asDateTime:=EncodeDate(JahrZiel+1,1,1)-EncodeDate(JahrZiel,1,1);
  ParamByName ('Diff').asInteger:=Diff;
  ExecSQL;
... oder nur das SQL Statement
SQL-Code:
  Insert Into Haustemperatur
  Select Flaeche,Cast((Termin+:ZeitWert) as DATE),Cast((Jahr+:Diff) as INTEGER),0,Temp_Tag,Temp_Nacht,0
  from HausTemperatur where Jahr=2005

.. für Hilfe wäre ich dankbar
Andreas Schachtner
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 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