tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
640
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    wayne95 wayne95 ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    1
    Hallo zusammen,

    ich habe eine tabelle "kassenbon" und eine tabelle "bestand". In Kassenbon trage ich sämtliche Einkäufe ein. Um den Bestand aktuell zu halten, startet ein trigger um die Menge aus Kassenbon in die tabelle bestand zu übertragen. Wenn ich nun z.B. n neue Artikel in Kassenbon eintrage, wird der erste eingetragene Artikel n mal in Bestand geschrieben und der rest n-1,n-2 usw. Folgenden trigger habe ich verwendet:#

    delimiter @@
    create procedure abgleich()
    begin
    declare i int;
    declare x int;
    declare z int;
    set i=0;
    set x=(Select max(einkauf_id) as menge from kassenbon);
    set z=(select count(einkauf_id) as anzahl from kassenbon where einkauf_id=(select max(einkauf_id) as m from kassenbon));
    myloop: REPEAT
    update bestand
    set bestand.menge=bestand.menge+kassenbon.menge
    where bestand.artikel=kassenbon.artikel_id and kassenbon.einkauf_id=x;
    set i=i+1;
    UNTIL i>=z
    END REPEAT;
    End;
    @@
    DELIMITER ;

    Irgenwas läuft schief mit der Schleife.
    ich danke im Voraus für Verbesserungen

    wayne
     

  2. #2
    F0rris F0rris ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Beiträge
    68
    SQL Code bitte in [sql] Code-Tags Speichern.

    Ist schon später aber evtl. triffs das ... gn8
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    CREATE TRIGGER `kassenbon_insert` AFTER INSERT ON `kassenbon`
        SET @x = (SELECT MAX(`einkauf_id`) AS `menge` FROM `kassenbon`);
        SET @z = (SELECT COUNT(`einkauf_id`) AS `anzahl` FROM `kassenbon` WHERE einkauf_id=@x);
        FOR EACH ROW
            BEGIN
                UPDATE 
                    `bestand`
                SET 
                    `bestand`.`menge`=`bestand`.`menge`+`kassenbon`.`menge`
                WHERE 
                    `bestand`.`artikel`=`kassenbon`.`artikel_id` 
                AND 
                    `kassenbon`.`einkauf_id`=@x;
            END;
    Geändert von F0rris (25.11.11 um 00:49 Uhr)
     
    Ein Nutzer braucht das Root-Passwort so dringend wie Nitroglyzerin durchgeschüttelt werden muss.

Ähnliche Themen

  1. MySQL Datenbank onkeyup aktualisieren
    Von travelsnake im Forum PHP
    Antworten: 7
    Letzter Beitrag: 14.09.11, 16:02
  2. MySql View aktualisieren
    Von TripleD im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 15.06.09, 07:46
  3. Tabelle Aktualisieren? -> MySQL
    Von Acriss im Forum Relationale Datenbanksysteme
    Antworten: 14
    Letzter Beitrag: 31.07.07, 15:29
  4. MySQL-Daten zum Tageswechsel aktualisieren
    Von ASD20054 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 30.05.06, 21:27
  5. mysql-Daten mit PHP aktualisieren
    Von SirSalomon im Forum PHP
    Antworten: 4
    Letzter Beitrag: 18.01.02, 19:50

Stichworte