MERGE auf eine Teilmenge

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

MERGE auf eine Teilmenge

Beitrag von UliTs »

Beim ADS gibt es ja den SQL-Befehl MERGE:

Code: Alles auswählen

MERGE [INTO] <tableref>
[USING <tableref>]
ON <search-condition>
<WHEN MATCHED THEN <update specification>> |
<WHEN NOT MATCHED THEN <insert specification>>
Leider weiß ich nicht, wie man den Befehl nicht auf eine Teilmenge der zweiten Tabelle anwenden kann.
Ich vermute fast, das geht nicht! :? :(

Als work around könnte ich zunächst eine temporäre Tabelle mit der gewünschten Teilmenge füllen und diese dann als zweite Tabelle im MERGE-Befehl verwenden.

Gibt es eine bessere Lösung? :?:

Wenn nein, gibt es einen SQL-Befehl bei dem ich direkt die temporäre Tabelle aus einer anderen Tabelle erzeugen und mit der gewünschten Teilmenge füllen kann?
Ich kenne nur den Weg über CREATE TABLE, bei dem ich alle Spalten manuell angeben muß.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: MERGE auf eine Teilmenge

Beitrag von Martin Altmann »

Nun,
bei Oracle geht das einfach mit folgendem Statement:

Code: Alles auswählen

create table <SCHEMA>.<TABLE_NEW> tablespace <TABLESPACENAME> as select * from <SCHEMA>.<TABLE_OLD>;
Ich glaube nicht, dass es unter ADS so viel anders sein sollte.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: MERGE auf eine Teilmenge

Beitrag von UliTs »

Hallo Martin,

danke für den Tipp. Zumindest beim CREATE TABLE Befehl gibt es eine derartige Syntax leider nicht :( .

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16509
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: MERGE auf eine Teilmenge

Beitrag von Martin Altmann »

Selbst dann nicht, wenn Du das "tablespace <TABLESPACENAME>" weglässt?
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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: MERGE auf eine Teilmenge

Beitrag von nightcrawler »

die zweite Tabelle kann auch aus einem Select bestehen...

Code: Alles auswählen

MERGE mytable a
USING (select f1,f2,f3 from myothertable where blabla) b
ON a.id=b.id
...
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten