z.t.i Geschrieben 15. Oktober 2009 Teilen Geschrieben 15. Oktober 2009 Hallo Leute, ich habe folgendes Problem. Ich muss aus der Tabelle Rechnung die Rechnungssumme in dem Schema mig (migration) mit der Tabelle Rechnung aus dem Schema prod in der produktivdatenbank auf falsch migrierte Rechnungssummen in der Produktivdatenbank prüfen. Dieses habe ich auch gemacht siehe Code: select migration.rechnung_summe NEU,migration.kunden_nr,prod.rechnung_summe ALT from migr.migration_rechnung migr, seb.rechnungen@recprod prod where migr.rechnung_art='Einzug' and migr.kunde_nr(+) = prod.kunde_nr AND migr.rechnung_nr(+) = prod.rechnung_nr AND migr.rechnung_betrag(+) = prod.rechnung_betrag AND migr.objekt_nr(+) = prod.objekt_nr AND migr._gueltig_ab(+) = gor.pol_gueltig_ab and migr.rechnung_offen='ja' and migr.rechnung_historie='Aktuell' and migr.rechnung_summe!=prod.rechnung_summe and prod.rechnung_offen='ja' and prod.rechnung_historie='Aktuell' order by migr.kunde_nr asc Als nächstes muss ich mit der richtigen (migration.rechnung_summe NEU) rechnungssumme die falsch migrierten rechnungssumme in der Produktivdatenbank ersetzen. Wie kann ich das machen?? Ich wäre für jeden Tipp dankbar!! Und würde mich sehr freuen, wenn Ihr mir weiterhelfen könnt. Es wurde mir bereits empfohlen eine Tabelle zu erzeugen.. s.u. 1. create table tblmigkorrektur as select ... und diese dann mit einem Update Befehl zu aktualisieren... s.u. 2. UPDATE ziel SET rechnung_summe =(select korr.rechnung_summe_neu from tblmigkorrektur korr where korr.kundenner=ziel.kundennr) where kundennur in(select kundennr from tblmigkorrektur); commit; Da ich zu 1 nicht recht viel weiß würde ich mich sehr freuen wie ich das damit lösen könnte. Kennt jemand den Standard Syntax zu 1??? Wie könnte ich dass den lössen. Einfache meine Abfrage dahinein bauen??:hells::( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 15. Oktober 2009 Teilen Geschrieben 15. Oktober 2009 Hallo, also die Syntax um aus einem Select eine Tabelle zu erzeugen ist create table foo as select * from bar where ....; [/code] Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
z.t.i Geschrieben 19. Oktober 2009 Autor Teilen Geschrieben 19. Oktober 2009 Hallo robotto7831a, danke für deinen Tipp. Dann müsste es bei mir so ausschauen??? Kannst du evtl. nur ein Blick drauf werfen ob das so mit der syntax funktionieren könnte??? create table tblmigkorrektur as Select migration.rechnung_summe NEU,migration.kunden_nr,prod.rechnung_summe ALT from migr.migration_rechnung migr, seb.rechnungen@recprod prod where migr.rechnung_art='Einzug' and migr.kunde_nr(+) = prod.kunde_nr AND migr.rechnung_nr(+) = prod.rechnung_nr AND migr.rechnung_betrag(+) = prod.rechnung_betrag AND migr.objekt_nr(+) = prod.objekt_nr and migr.rechnung_offen='ja' and migr.rechnung_historie='Aktuell' and migr.rechnung_summe!=prod.rechnung_summe and prod.rechnung_offen='ja' and prod.rechnung_historie='Aktuell' UPDATE seb.rechnungen@recprod prod SET prod.rechnung_summe =(select korr.rechnung_summe from tblmigkorrektur korr where korr.kunde_nr=prod.kunde_nr) where gor.kunde_nr in(select kunde_nr from tblmigkorrektur); commit; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 19. Oktober 2009 Teilen Geschrieben 19. Oktober 2009 where gor.kunde_nr in(select kunde_nr from tblmigkorrektur); Ersetze gor. durch prod. Außerdem solltest Du dir die TBLMIGKORREKTUR mal ansehen. Die dortigen Spaltennamen sind mit den Aliasen identisch die Du auch im SELECT verwendet hast. Die Spalten dort heißen also NEU, KUNDEN_NR und ALT. Die musst Du auch in deinem Update so verwenden. Aber ich wiederhole mich. Evtl. wäre es noch vorteilhaft vor dem Update einen Index auf die Korrekturtabelle zu legen: create index tblkorrektur_ix1 on tblkorrektur(kunden_nr,neu); Dim PS: Der UPDATE läuft natürlich nur, wenn die Kundennummer eindeutig ist. Sind dort doppelte Werte vorhanden bricht das Statement ab. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.