Preislisten aktualisieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Herr_Stromberg
Beiträge: 2
Registriert: Di, 14.09.2010 10:35

Preislisten aktualisieren

Beitrag von Herr_Stromberg »

Moin,

brauche mal einen kleinen Anstoss in die richtige Richtung:

Ich habe eine Tabelle Produkte mit knapp 10.000 Artikeln (Artikelnummer, Bezeichnung, Preis, usw.)
Nun bekomme ich ab und an eine Tabelle Neue_Preise von Artikeln deren Preise sich geändert haben. (Artikelnummer, Preis) Artikelnummer ist dabei das Kriterium zur Identifikation in beiden Tabellen.

Wie stelle ich es am geschicktesten an die neuen Preise einzufügen?
Einfach die Spalte drüberkopieren kann unter Umständen gefährlich werden, da manche Artikel aussortiert werden und neue Artikel hinzukommen.
Ich brauche eigentlich soetwas:
- Suche in der Tabelle Produkte die Artikelnummer des xten Datensatz
- Suche in der Tabelle Neue_Preise den Preis der Artikelnummer des xten Datensatzes
- Schreibe den neue Preis in die Tabelle Artikel an die Stelle des xten Datensatzes
- Suche in der Tabelle Produkte die Artikelnummer des x+1ten Datensatz
...

Wie gesagt, ein kleiner Hinweis in die richtige Richtung würde mir helfen

Thanks
Herr_Stromberg
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Preislisten aktualisieren

Beitrag von DPunch »

Aloha

Auch wenn mich diese Formulierung
Herr_Stromberg hat geschrieben:- Suche in der Tabelle Produkte die Artikelnummer des xten Datensatz
doch etwas verwirrt, weil Du einerseits schreibst, dass die Identifikation über die Artikelnummer stattfindet, andererseits nun aber die Artikelnummer erst suchen willst, erfolgt so etwas prinzipiell über ein UPDATE mit Unterabfragen.

In Deinem Fall so oder so ähnlich:

Code: Alles auswählen

UPDATE "Preise" 
SET "Preis"  = (SELECT "Preis" FROM "Neue_Preise" WHERE "Neue_Preise"."Artikelnummer" = "Preise"."Artikelnummer")
WHERE "Artikelnummer" IN (SELECT "Artikelnummer" FROM "Neue_Preise")
Auszuführen über Menüpunkt "Extras" -> "SQL".
Herr_Stromberg
Beiträge: 2
Registriert: Di, 14.09.2010 10:35

Re: Preislisten aktualisieren

Beitrag von Herr_Stromberg »

Vielen Dank DPunch,

das war die richtige Richtung. Mit folgender Syntax hats dann geklappt:

Code: Alles auswählen

UPDATE Produkte
SET Preis = (SELECT Preis FROM Neue_Preise WHERE Produkte.Artikelnummer = Neue_Preise.Artikelnummer) WHERE Artikelnummer IN (SELECT Artikelnummer FROM Neue_Preise)
Musste als OpenofficeBase-Anfänger natürlich auch erst drauf kommen, dass die Abfrage nicht mit dem normalen Abfrage-Editor funktioniert, sondern mit Menu Extras->SQL (hatte die letzte Zeile im Posting übersehen) und dass, wenn man den SQL-Connector installiert vor dem Neustart Openoffice auch in der Schnellstartleiste beenden muss.

Gruss
Herr_Stromberg
Antworten