SQL Spalten automatisch zusammenrechnen und in andere Spalte schreiben

freak1051

Ensign
Registriert
Dez. 2012
Beiträge
198
Hallo Community,

Ich habe mich etwas in MySQl versucht. die Datenbank läuft über ein phpMyAdmin-Zugang.
Ich will/wollte versuchen die Vorbestellten Fische meines Angelvereins für Gründonnerstag zu handeln, rein aus Interesse.

bisher funktioniert alles wie geplant. Nun interessiert mich natürlich die Gesamtanzahl von Fischen (geräuchert und frisch). Hierzu verwende ich aktuell diese beiden Befehle:

SELECT sum(Menge_geraucht) as Gesamt_geraucht FROM Fischbestellung_2019 ;

SELECT sum(Menge_Frisch) as Gesamt_Frisch FROM Fischbestellung_2019;

Funktioniert tadellos, nur muss ich natürlich jedes mal, wenn ich aufsummieren will, den Befehl eingeben.


Gibt es eine Möglichkeit automatisiert in eine Andere Datenbank diese werte zu schreiben. Ich stell mir das vor wie in Ecxel mit =Summe(a1-a200).

Habe also eine Datenbank mit dem namen Berechnungen erstellt und 2 spalten eingefügt mit den namen 'gesamt frisch' und 'gesamt geräuchert' beides sind Integer. Kann ich in diese Spalten oben dargestellte Formel hinterlegen, das beim aufruf der DB SQL schnell rechnet, und mir das Ergebniss anzeigt?

vielen dank für eure Hinweise

mfg

Daniel
 
Du könntest ein sogenanntes View statt einer Tabelle erstellen.

SQL:
CREATE VIEW gesamtanzahl AS
    SELECT
        sum(Menge_geraucht) as Gesamt_geraucht,
        sum(Menge_Frisch) as Gesamt_Frisch
    FROM
        Fischbestellung_2019;

Mit folgendem Befehl hättest du dann immer alle aktuellen Summen:

SQL:
SELECT * FROM gesamtanzahl

EDIT: keine Garantie, dass der Code so in MySQL funktioniert.
 
  • Gefällt mir
Reaktionen: G-Red
@mam97: Hab mich mal grob eingelesen. Mir fehlt heute nur leider die Zeit dazu. Hört sich aber super spannend an

@benneque: Das mit den triggern hab ich schon versucht, bevor ich ans Forum ging. phpMyadmin bietet des ja auch recht net in einer GUI. leider lässt er aufsummierungen nicht zu. Zumindest meckert er an aufsummierung mit sum herum.

Und der View funktioniert perfekt. Habe mit es mit der Anleitung gebaut und (fast) auf dein Ergebniss gekommen @Ocram1992

aber ich versteh das schon richtig. wenn ich nun auf meinen view klicke, aktuallisiert er mir die Summen automatisch?
 
Ein View existiert nicht wirklich, das ist nur eine virtuelle Tabelle. Also im nur eine vordefinierte gespeicherte Datenbankabfrage.
Soll heißen: Wenn du SELECT * FROM MyView ausführst, dann ist das dasselbe als wenn du das Query aus der View Definition ausführst.

Im View wird nichts gespeichert (bis auf das Query, das für das View nötig ist).

Im Gegensatz dazu stehen die Trigger. Damit erhält man eine echte Tabelle, wo die Daten jeweils aktualisiert werden, wenn ein Trigger ausgelöst wird.

Ganz grob kann man sagen:
  • Trigger haben die bessere Read Performance
  • Views haben die bessere Write Performance
 
Zurück
Oben