MySQL Forums
Forum List  »  German

Re: Frage zu UPDATE
Posted by: Heiko Augustin
Date: February 20, 2012 11:50AM

Hallo Thomas und danke für deine Antwort!

Zunächst mal die zusätzlichen Informationen.


Create Code:

CREATE TABLE `Demotable` (
	`Vorgang` VARCHAR(1) NOT NULL DEFAULT '' COLLATE 'latin1_bin',
	`Nummer` VARCHAR(11) NOT NULL DEFAULT '' COLLATE 'latin1_bin',
	`Auftrag` VARCHAR(11) NULL DEFAULT NULL COLLATE 'latin1_bin',
	`Bestellung1` VARCHAR(11) NULL DEFAULT NULL COLLATE 'latin1_bin',
	PRIMARY KEY (`Vorgang`, `Nummer`)
)
COLLATE='latin1_bin'
ENGINE=InnoDB;


Inserts:

INSERT INTO `demotable` (`Vorgang`, `Nummer`, `Auftrag`, `Bestellung1`) VALUES ('A', '10000000000', '10000000000', '60000000000');
INSERT INTO `demotable` (`Vorgang`, `Nummer`, `Auftrag`, `Bestellung1`) VALUES ('A', '10000000001', '10000000001', '60000000001');
INSERT INTO `demotable` (`Vorgang`, `Nummer`, `Auftrag`, `Bestellung1`) VALUES ('D', '30000000000', '10000000000', '60000000003');
INSERT INTO `demotable` (`Vorgang`, `Nummer`, `Auftrag`, `Bestellung1`) VALUES ('D', '30000000001', '10000000001', '000');
INSERT INTO `demotable` (`Vorgang`, `Nummer`, `Auftrag`, `Bestellung1`) VALUES ('D', '30000000002', '10000000001', '60000000001');
INSERT INTO `demotable` (`Vorgang`, `Nummer`, `Auftrag`, `Bestellung1`) VALUES ('P', '40000000000', '10000000000', '');

Wie schon eingangs beschrieben, können zu jedem Auftrag beliebig viele Folgevoränge existieren. Erkennbar an "Vorgang". "A" = "Auftrag", "D" = "Direktrechnung", "P" = "Proformarechnung", usw.
Die Folgevorgänge kennen "Ihren" Auftrag durch das Feld "Auftrag".
Nun muss es per Anforderung so sein, dass jeder Folgevorgang im Feld "Bestellung" die gleiche Angabe hat wie sein Auftrag.
Leider schleichen sich Fehler ein und die möchte ich per Update korrigieren.


Das sind Demodaten.
Die echten Daten leben, täglich kommen Aufträge und Vorgänge hinzu und immer wieder sind "Bösewichte" dabei.

Daher suche ich nach einer generischen Methode die diese Aufgabe erledigt.

Ich bin relativ neu bei mySQL und denke bestimmt noch zu sehr im klassischen Programmieren.
Dort würde ich "select distinct auftrag, bestellung from demotable where vorgang = 'A'" schreiben.
Und dann eine Schleife die für jeden Record/Auftrag "update demotable set bestellung = VariableBestellungAusErstemRecordset where auftrag = VariableAuftragAusErstemRecordset and vorgang <> 'A'".

Natürlich suche ich nach einem SQL Statement! ;-)

Viele Grüße,
Heiko



Edited 2 time(s). Last edit at 02/20/2012 06:01AM by Heiko Augustin.

Options: ReplyQuote


Subject
Views
Written By
Posted
1755
February 20, 2012 04:11AM
1110
February 20, 2012 05:16AM
Re: Frage zu UPDATE
1243
February 20, 2012 11:50AM
1012
February 20, 2012 12:35PM
947
February 20, 2012 12:52PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.