Hallo, folgende Situation: Tabelle A Field "Anzahl" Tabelle B Field "Einzelpreis" Tabelle C Field "Summe" Formel "Anzahl" * "Einzelpreis" = "Summe" wie kann ich mit MySQL realisieren, dass sobald sich "Anzahl" oder "Einzelpreis" ändert die "Summe" aktualisiert? Mit der Hilfe von MySQL habe ich nur rausbekommen, dass man diese Tabellen damit nicht aktualisieren kann. Es sollte doch möglich sein eine Formel oder eine Funktion in die Tabell C zu integrieren auf dass sie automatisch berechnet wird. Gruss Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 21.11.2010 14:59, schrieb Bernhard Junk:
Hallo,
folgende Situation:
Tabelle A Field "Anzahl" Tabelle B Field "Einzelpreis" Tabelle C Field "Summe"
Formel "Anzahl" * "Einzelpreis" = "Summe" wie kann ich mit MySQL realisieren, dass sobald sich "Anzahl" oder "Einzelpreis" ändert die "Summe" aktualisiert? Mit der Hilfe von MySQL habe ich nur rausbekommen, dass man diese Tabellen damit nicht aktualisieren kann. Es sollte doch möglich sein eine Formel oder eine Funktion in die Tabell C zu integrieren auf dass sie automatisch berechnet wird. Gruss Bernd
Hallo Bernhard, ich arbeite seit Jahren mit mySQL und ich glaube, ich habe schon fast alles gemacht was man mit (my)SQL machen kann. Aber ich verstehe Deine Frage nicht wirklich. Du willst eine Tabelle deren Inhalt sich automatisch, basierend auf dem Inhalt anderer Tabellen, ändert? Du solltest mal das Design deiner Datenbank überdenken! Welchen Sinn soll das haben? Wie sind Tabellen A und B verknüpft? Wie sieht diese Relation aus? Ich nehme an (hoffe) über eine Art Artikel-ID, oder? Wenn es so ist kann ich Dir spontan anbieten: CREATE VIEW AS (SELECT A.Anzahl * B.Einzelpreis AS Summe FROM A JOIN B ON A.ID=B.ID) Hab das jetzt mal so schnell hingeschrieben. Daher ohne Gewähr auf Fehlerfreihet ! Am besten du erklärst mal genau wie deine DB aussieht und was Du erreichen möchtest. liebe Grüße, Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 21.11.2010 15:17, schrieb Norbert Zawodsky:
Am 21.11.2010 14:59, schrieb Bernhard Junk:
Hallo,
folgende Situation:
Tabelle A Field "Anzahl" Tabelle B Field "Einzelpreis" Tabelle C Field "Summe"
Formel "Anzahl" * "Einzelpreis" = "Summe" wie kann ich mit MySQL realisieren, dass sobald sich "Anzahl" oder "Einzelpreis" ändert die "Summe" aktualisiert? Mit der Hilfe von MySQL habe ich nur rausbekommen, dass man diese Tabellen damit nicht aktualisieren kann. Es sollte doch möglich sein eine Formel oder eine Funktion in die Tabell C zu integrieren auf dass sie automatisch berechnet wird. Gruss Bernd
Hallo Bernhard,
ich arbeite seit Jahren mit mySQL und ich glaube, ich habe schon fast alles gemacht was man mit (my)SQL machen kann. Aber ich verstehe Deine Frage nicht wirklich.
Du willst eine Tabelle deren Inhalt sich automatisch, basierend auf dem Inhalt anderer Tabellen, ändert? Du solltest mal das Design deiner Datenbank überdenken! Welchen Sinn soll das haben?
Wie sind Tabellen A und B verknüpft? Wie sieht diese Relation aus? Ich nehme an (hoffe) über eine Art Artikel-ID, oder? Wenn es so ist kann ich Dir spontan anbieten:
CREATE VIEW AS (SELECT A.Anzahl * B.Einzelpreis AS Summe FROM A JOIN B ON A.ID=B.ID)
Hab das jetzt mal so schnell hingeschrieben. Daher ohne Gewähr auf Fehlerfreihet !
Am besten du erklärst mal genau wie deine DB aussieht und was Du erreichen möchtest.
liebe Grüße, Norbert
Hallo Norbert, erstmal vielen Dank. Ich werde es einmal ausprobieren. Verknüpft sind die Tabellen über die Artikel-ID. Ich möchte aber, dass die Syntax automatisch ausgeführt wird wenn sich Anzahl oder Einzelpreis verändert. So ähnlich wie bei Excel wo man die Formel in das Feld schreibt. Ich habe das einmal ergoogelt ( schlimmes Neudeutsch ). Da bekam ich den Hinweis, dass so etwas unter MySQL nicht möglich ist. Ich möchte ja nicht jedesmal ein MySQL-Script starten. Gruss Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 21.11.2010 15:27, schrieb Bernhard Junk:
Am 21.11.2010 15:17, schrieb Norbert Zawodsky:
Hallo Norbert, erstmal vielen Dank. Ich werde es einmal ausprobieren. Verknüpft sind die Tabellen über die Artikel-ID. Ich möchte aber, dass die Syntax automatisch ausgeführt wird wenn sich Anzahl oder Einzelpreis verändert.
So ähnlich wie bei Excel wo man die Formel in das Feld schreibt.
Ich habe das einmal ergoogelt ( schlimmes Neudeutsch ). Da bekam ich den Hinweis, dass so etwas unter MySQL nicht möglich ist. Ich möchte ja nicht jedesmal ein MySQL-Script starten.
Gruss Bernd
Hallo Bernd, ich kann mich nur wiederholen! Es gibt möglicher Weise ein grundlegendes Design / Verständnisproblem. Was möchtest Du erreichen? Du vermischt IMHO "Daten" und "Funktionen". Funktionen (wie das Produkt aus Menge und Preis) haben meistens in einer DB nichts verloren. Das ist Aufgabe des "Frontends". Anders ausgedrückt: Was möchtest Du mit dem Produkt aus menge und Preis tun? Wo willst Du es verwenden? In einem Ausdruck? Auf einer Rechnung, Lieferschein? Oder nur zu Deiner Information? lG Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 21.11.2010 15:27, schrieb Bernhard Junk:
Am 21.11.2010 15:17, schrieb Norbert Zawodsky:
Hallo Norbert, erstmal vielen Dank. Ich werde es einmal ausprobieren. Verknüpft sind die Tabellen über die Artikel-ID. Ich möchte aber, dass die Syntax automatisch ausgeführt wird wenn sich Anzahl oder Einzelpreis verändert.
So ähnlich wie bei Excel wo man die Formel in das Feld schreibt.
Ich habe das einmal ergoogelt ( schlimmes Neudeutsch ). Da bekam ich den Hinweis, dass so etwas unter MySQL nicht möglich ist. Ich möchte ja nicht jedesmal ein MySQL-Script starten.
Gruss Bernd
Hallo Bernd, ich kann mich nur wiederholen! Es gibt möglicher Weise ein grundlegendes Design / Verständnisproblem. Was möchtest Du erreichen? Du vermischt IMHO "Daten" und "Funktionen". Funktionen (wie das Produkt aus Menge und Preis) haben meistens in einer DB nichts verloren. Das ist Aufgabe des "Frontends". Anders ausgedrückt: Was möchtest Du mit dem Produkt aus menge und Preis tun? Wo willst Du es verwenden? In einem Ausdruck? Auf einer Rechnung, Lieferschein? Oder nur zu Deiner Information? lG Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 21.11.2010 16:16, schrieb Norbert Zawodsky:
Am 21.11.2010 15:27, schrieb Bernhard Junk:
Am 21.11.2010 15:17, schrieb Norbert Zawodsky:
Hallo Norbert, erstmal vielen Dank. Ich werde es einmal ausprobieren. Verknüpft sind die Tabellen über die Artikel-ID. Ich möchte aber, dass die Syntax automatisch ausgeführt wird wenn sich Anzahl oder Einzelpreis verändert.
So ähnlich wie bei Excel wo man die Formel in das Feld schreibt.
Ich habe das einmal ergoogelt ( schlimmes Neudeutsch ). Da bekam ich den Hinweis, dass so etwas unter MySQL nicht möglich ist. Ich möchte ja nicht jedesmal ein MySQL-Script starten.
Gruss Bernd
Hallo Bernd,
ich kann mich nur wiederholen! Es gibt möglicher Weise ein grundlegendes Design / Verständnisproblem.
Was möchtest Du erreichen?
Du vermischt IMHO "Daten" und "Funktionen". Funktionen (wie das Produkt aus Menge und Preis) haben meistens in einer DB nichts verloren. Das ist Aufgabe des "Frontends".
Anders ausgedrückt:
Was möchtest Du mit dem Produkt aus menge und Preis tun? Wo willst Du es verwenden? In einem Ausdruck? Auf einer Rechnung, Lieferschein? Oder nur zu Deiner Information?
lG Norbert
Hallo Norbert, im Prinzip hast Du recht! Ich möchte aus der DB mit den Tabellen A und B eine Verknüpfung nach C herstellen die automatisch die Werte verändert. Das Obige ist nur ein Beispiel gewesen. Es sind mehrere Tabellen die ich mathematisch verknüpfen möchte. Das Ergebnis soll dann in einer neuen Tabelle abgelegt werden. Diese neue Tabelle soll dann mit einem Increment im Index versehen werden, so dass es bei jeder neuen Berechnung einen neuen Datensatz ergibt. Dieser und nur dieser kann dann eingesehen werden. Die Eingaben erfolgen auf Tabelle A und B. Das Ergebnis steht in C. Jetzt besser verständlich? Gruss Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 21.11.2010 16:25, schrieb Bernhard Junk:
Am 21.11.2010 16:16, schrieb Norbert Zawodsky:
Am 21.11.2010 15:27, schrieb Bernhard Junk: Hallo Bernd,
ich kann mich nur wiederholen! Es gibt möglicher Weise ein grundlegendes Design / Verständnisproblem.
Was möchtest Du erreichen?
Du vermischt IMHO "Daten" und "Funktionen". Funktionen (wie das Produkt aus Menge und Preis) haben meistens in einer DB nichts verloren. Das ist Aufgabe des "Frontends".
Anders ausgedrückt:
Was möchtest Du mit dem Produkt aus menge und Preis tun? Wo willst Du es verwenden? In einem Ausdruck? Auf einer Rechnung, Lieferschein? Oder nur zu Deiner Information?
lG Norbert
Hallo Norbert, im Prinzip hast Du recht! Ich möchte aus der DB mit den Tabellen A und B eine Verknüpfung nach C herstellen die automatisch die Werte verändert. Das Obige ist nur ein Beispiel gewesen. Es sind mehrere Tabellen die ich mathematisch verknüpfen möchte. Das Ergebnis soll dann in einer neuen Tabelle abgelegt werden. Diese neue Tabelle soll dann mit einem Increment im Index versehen werden, so dass es bei jeder neuen Berechnung einen neuen Datensatz ergibt. Dieser und nur dieser kann dann eingesehen werden. Die Eingaben erfolgen auf Tabelle A und B. Das Ergebnis steht in C. Jetzt besser verständlich?
Gruss Bernd
Aha! Jetzt wird es schon klarer!! Das ist meiner Meinung nach ein eindeutiger Fall für einen "Trigger". Schau dir mal die CREATE TRIGGER Syntax an. Ein Trigger ist eine Art Funktion die in der DB gespeichert ist. Wenn bestimmte Events passieren, z.B. ein UPDATE auf eine Tabelle kann mit diesem Event ein Trigger ausgelöst werden. Der kann dann verschiedenes tun. Z.B. in einer Tabelle C einen Record INSERTen... Grüße Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Am 21.11.2010 16:31, schrieb Norbert Zawodsky:
Am 21.11.2010 16:25, schrieb Bernhard Junk:
Am 21.11.2010 16:16, schrieb Norbert Zawodsky:
Am 21.11.2010 15:27, schrieb Bernhard Junk: Hallo Bernd,
ich kann mich nur wiederholen! Es gibt möglicher Weise ein grundlegendes Design / Verständnisproblem.
Was möchtest Du erreichen?
Du vermischt IMHO "Daten" und "Funktionen". Funktionen (wie das Produkt aus Menge und Preis) haben meistens in einer DB nichts verloren. Das ist Aufgabe des "Frontends".
Anders ausgedrückt:
Was möchtest Du mit dem Produkt aus menge und Preis tun? Wo willst Du es verwenden? In einem Ausdruck? Auf einer Rechnung, Lieferschein? Oder nur zu Deiner Information?
lG Norbert
Hallo Norbert, im Prinzip hast Du recht! Ich möchte aus der DB mit den Tabellen A und B eine Verknüpfung nach C herstellen die automatisch die Werte verändert. Das Obige ist nur ein Beispiel gewesen. Es sind mehrere Tabellen die ich mathematisch verknüpfen möchte. Das Ergebnis soll dann in einer neuen Tabelle abgelegt werden. Diese neue Tabelle soll dann mit einem Increment im Index versehen werden, so dass es bei jeder neuen Berechnung einen neuen Datensatz ergibt. Dieser und nur dieser kann dann eingesehen werden. Die Eingaben erfolgen auf Tabelle A und B. Das Ergebnis steht in C. Jetzt besser verständlich?
Gruss Bernd
Aha! Jetzt wird es schon klarer!!
Das ist meiner Meinung nach ein eindeutiger Fall für einen "Trigger". Schau dir mal die CREATE TRIGGER Syntax an.
Ein Trigger ist eine Art Funktion die in der DB gespeichert ist. Wenn bestimmte Events passieren, z.B. ein UPDATE auf eine Tabelle kann mit diesem Event ein Trigger ausgelöst werden. Der kann dann verschiedenes tun. Z.B. in einer Tabelle C einen Record INSERTen...
Grüße Norbert
Hallo, genau das war es. Das hatte auch schon Michael geschrieben und mir einen Link beigefügt. Danke erstmal. Gruss Bernd -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
*** Bernhard Junk
Ich möchte aber, dass die Syntax automatisch ausgeführt wird wenn sich Anzahl oder Einzelpreis verändert.
Hmm... http://dev.mysql.com/doc/refman/5.1/de/create-trigger.html HTH Micha -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (3)
-
Bernhard Junk
-
Michael Meyer
-
Norbert Zawodsky