Formulierung einer SQL-Abfrage

Liebe/-r Experte/-in,

ich bennötige Deine Hilfe zur Fromulierung zweier SQL-Abfragen.

  1. Abfrage: Eine (Stamm)Tabelle komplett auslesen und neu bzw. in eine (Ziel)Tabelle schreiben (UPDATE).
    Die (Ziel)tabelle unterscheidet sich von der (Stamm)Tabelle lediglich in einer Felddefinition, „Memo“ (150 Zeichen) anstatt „Text“ (50 Zeichen) in der (Stamm)Tabelle.
    Der Vorgang soll einmalig ablaufen.

  2. Abfrage: Erneutes UPDATE der (Ziel)Tabelle, diesmal aus einer dritten Tabelle „ArtikelNamenLang“.
    Dieser Vorgang soll wiederholt ablaufen (2-3 mal die Woche).
    Hintergrund: Ein Programm welches auf die Datenbank (bzw. (Ziel)Tabelle)zugreift schneidet die Artikelnamen (Feld „ArtikelName-kurz“) bei 50 Zeichen ab. Die abgeschnittenen Bezeichungen sollen durch die langen Bezeichungen (hinterlegt in der Tabelle ArtikelNamenLang, Feld „ArtikelName-lang“) ersetzt werden.

Aufbau der (Ziel)Tabelle: ID, ArtikelNummer, ArtikelName-kurz,…

Aufbau der Tabelle ArtikelNamenLang: ID, ArtikelNummer, ArtikelName-lang.

Die Artikelnummern sind eindeutig.

Leider fehlt mir die Zeit mich selber einzulesen.

Vielen Dank schon mal für Deine Mühe.

Gruß,

P. HInsberg

Guten Tag

Bin mir nicht sicher ob ich deine Fragen verstanden habe.

Zur Frage 1.

insert into zieltabelle as
select * from stammtabelle

Es werden alle Zeilen aus der Tabelle stammtabelle in die Tabelle zieltabelle übertragen.
Da „Memo“ in der Zieltabelle länger ist, sollte es keine Probleme geben.

Zur Frage 2.
Habe auf meinem PC im Moment keine Datenbank.

Aber Sie müssen eine for-schleife machen
Geht meines wissens so

begin
for i in (select id, artikelnummer, artikelname-lang from ArtikelNamenLang)
loop
update zieltabelle
set = artikelName-kurz = substr(artikelname-kurz,1,50) || i.artikelname-lang
where id = i.id
and artikelnummer = i.artikelnummer
end loop;
end;

Hoffe ich hab das mit den Namem richtig verstanden, kommt mir etwas seltsam vor.

In Oracle können Sie das mit sqlplus ausführen.

2 bis 3 Wiederholungen je Woche
Wenn Sie ein Windows Betriebssystem haben würde ich einen at-Jobs machen.
Für Linux (unix und Verwandete) würde ich einen cronjob machen.

Bei einer Oracle-DB können Sie auch Zeitaufträge hinterlegen.

Hoffe auf ein gutes gelingen
Josef Waller

Guten Abend Herr Waller,

und schon mal vielen Dank für Ihre Hilfe.

Das Problem Nr. 1 hat sich erledigt, ich konnte die Datenbank in eine aktuelle Access-Version importieren und das Feld dort ändern.

Mich dem Problem Nr. 2 ausführlicher zuzuwenden werde ich in den nächsten Tagen kommen, falls ich nicht zurecht kommen sollte würde ich Sie dann gerne nochmal (mit detaillierteren Informationen) anschreiben.

Mit bestem Dank und freundlichen Grüßen,

Peter Hinsberg