Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Update - Record

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Update - Record

    Hallo zusammen,

    ja ich bin neu und suche Hilfe.
    Meine Kenntnisse im Bereich Sql sind ok aber ein wenig in die Jahre gekommen.

    Mich quält sein einigen Tagen folgende Problematik.

    Maschinengesteuert werden in meiner mySQL DB (5.1.36) SUSE 12.2 in einer Tabelle Werte erfaßt.
    tbl_Verbrauchswerte
    DBID (Int) Autoinc, Kunde(Int), Menge(Int),Abgerechnet(Bool) ... einige andere

    Die Records werden fortlaufend mit den entsprechenden Mengen eingetragen.

    Pro Kunde enstehen dadurch ca. 10-12 Records

    Am Ende des Jahres möchte ich in dem letzten Rec eines Kunden die Gesamtmenge ermitteln und speichern. Daher könnte das Feld Menge in diesem Satz durchaus überschrieben werden. Ausserdem soll dann dieser Satz ein Kennzeichen erhalten (Abgerechnet JA/NEIN)

    Wenn ich mit der Logik
    Update tbl set Menge=(Select Sum(Menge) from tbl) .. daran gehe referenziere ich auf die gleiche Tabelle und lauf damit auf den Poller.

    Wie kann ich so etwas in sql lösen ?
    Irgendeine Idee -Ich bedank mich schon mal im Vorfeld

    Cheers DIDI


  • #2
    Es gibt keinen (nennenswerten) Grund, wieso du die kumulierten Werte in einer Datenbank speichern sollst.

    Du kannst jedoch gruppiert auslesen:
    Code:
    SELECT kunde, sum(menge) FROM verbrauchswerte WHERE YEAR(datum) = 2014 GROUP BY kunde
    Ich hoffe, ich verstehe ungefähr richtig, was du willst.
    GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

    Kommentar


    • #3
      Hallo ChristianK,

      zunächst einmal Danke für die schnelle Antwort.
      Du hast natürlich Recht - wollte aber keine Romane schreiben und deswegen latent nicht das komplette Programm beschrieben.

      Mit dem ermittelten Gesamtwert will ich weitere Berechnungen durchführen eg. Rechnungen und Statistiken.

      Wenn ich die Summe habe, brauche ich die Abfrage nicht permanent mit durch den ganzen folgenden Rest zu "schleppen" .

      Wenn es nicht gehen sollte würde ich das mit einer tmp_tbl lösen.
      Nach Jahresabschluss brauche ich die Werte nur noch in der Rohform.

      Hilft das weiter ? Sorry wenn ich das bei ersten Mal nicht komplett beschrieben habe.

      Cheers der DIDI

      Kommentar


      • #4
        Ok, du kannst auch eine Tabelle machen, die die berechneten Informationen speichert (schematisch):

        Code:
        CREATE TABLE jahresauswertung (
           jahr DECIMAL(4),
           kunde INT,
           summe INT
           UNIQUE (jahr, kunde)
        )
        Wirklich:
        Code:
        INSERT INTO jahresauswertung (jahr, kunde, summe)
          SELECT YEAR(datum), kunde, SUMME(menge) FROM ...
        Der UNIQUE-Index stellt sicher, dass du pro Kunde und Jahr nur eine "Auswertung" hast.
        GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

        Kommentar


        • #5
          Perfekt - manchmal sieht man den Wald vor lauter Bäumen nicht.

          Ist das erste Mal das ich mich an ein Forum gewendet habe und bin verblüfft war erst ein wenig mhhh.. irritiert durch einige andere Beiträge.

          Ganz herzlichen Dank -- schließe natürlich ab
          DIDI

          Kommentar

          Lädt...
          X