Satz duplizieren

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Satz duplizieren

Beitrag von Manfred »

ich möchte gerne einen Satz duplizieren in einer Tabelle.
Es sollen aber nicht alle Inhalte im Ziel bleiben, einige sollen geleert werden, ein anderes einen neuen Inhalt bekommen.
Einen Satz von eienr Tabelle in eine andere Tabelle kopieren habe ich schon gemacht, aber wie dupliziert man einen Satz, wenn einige Felder im Ziel anders sein müssen?
Ich möchte aus Übersicht nicht alle Felder einzeln angeben müssen, die kopiert werden sollen. Das wären zu viele die angegeben werden müssen. Geht das auch ohne?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Satz duplizieren

Beitrag von nightcrawler »

SQL?

Code: Alles auswählen

INSERT INTO meinetabelle (ID, Feld1, Feld2, Feld3, Feld4)
SELECT newid(), Feld1, 'hallo welt', Feld3, Feld4 FROM meinetabelle
WHERE ID=42
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Satz duplizieren

Beitrag von Manfred »

das ist ja das, was ich versuche zu verhindern. Alle Felder anzugeben. So kannte ich das auch.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Satz duplizieren

Beitrag von Manfred »

ich hätte auch kein Problem den Satz vorher in eine temporär Tabelle zu schreiben, umzuändern und dann in die Zieldatei anzuhängen. Aber ich bekomme das unter dem ADS nicht hin. Wie sieht der Befehl aus, der in eine temporäre Tabelle schreibe?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Satz duplizieren

Beitrag von Jan »

Manfred,

und wenn Du den Originalsatz in ein DataObject schreibst? Eine Zeile Code. Und manipulieren kannst Du die Werte dann, bevor Du die mit einer weiteren Zeile Code in den neuen Satz schreibst.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Satz duplizieren

Beitrag von Manfred »

OK,
mir fehlte der Hinweis das man beim ADS mit dem # arbeiten muß um eine temporäre Tabelle zu erzeugen.
Jetzt komme ich zumindest weiter. Bin aber trotzdem noch offen für weitere Vorschläge dazu.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Satz duplizieren

Beitrag von Tom »

Du kannst doch das INSERT-Statement in einer kleinen Loop zusammensetzen, die FCount-mäßig die Feldnamen verwendet, außer in den Fällen, wo ein Feld mit einem bestimmten anderen Wert besetzt werden muss.
Herzlich,
Tom
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Satz duplizieren

Beitrag von Marcus Herz »

Falls du ein ADD hast, da hab ich neine SQL Funktion geschrieben, welche das abdeckt, was du brauchst:
Der AUfruf erfolgt so:

Code: Alles auswählen

declare @str string;
@str = 'insert into ziel ( '+ CopyFieldsByName('ziel', 'source', 'exclude field list') + ')
	select '+ CopyFieldsByName('ziel', 'source','exclude field list') + '
	from source  
	where ....   ;';
	
execute immediate @str;	
Ziel und Source können ident sein, müssen aber nicht, Es werden nur Felder gelistet, deren Namen in beiden Tabellen vorkommen. Eine Typprüfung erfolgt nicht.
die Exclue Fieldlist muss kommasepariert sein UND mit EINEM Komma beginnen und enden, z.B. ',NAME,'
Die Fieldlist kann auch NULL sein

Code: Alles auswählen

CREATE FUNCTION CopyFieldsByName 
   ( 
   ziel CHAR ( 20 ),
    quelle CHAR ( 20 ),
    exclude CICHAR ( 100 )
   )
   RETURNS STRING
BEGIN
declare @table cursor;
declare @str string;

open @table as
select name from system.columns
  where parent = ziel
  and name in (select name from system.columns where parent = quelle )
  and not name like  '@_@_%' ESCAPE '@'
  and not name in ( '_pRID', 'RID' )
  and (exclude is null or position(','+trim(name)+',' in exclude ) = 0)
 ;

@str = '';
while fetch @table do
  @str = @str +','+ alltrim(@table.name);
end while;
close @table;
return @str;

END;
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Satz duplizieren

Beitrag von Manfred »

da es jetzt speziell um den ADS geht, geht es hier weiter.
https://www.xbaseforum.de/viewtopic.php ... 44#preview
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten