Hi,
ich habe folgende Tabelle
die id ist unique,
das Datum gibt den aktuellen Tag an,
opt, kann die Werte 1, 2, oder 3 annehmen,
value ist ein beliebig großer int
Ich möchte, dass am gleichen Tag (date), die zeile mit dem passenden opt-wert ein update erfährt, wenn valuegrößer ist, als in der Tabelle hinterlegt. Wenn es für den aktuellen Tag keinen datum gibt (wieder in bezug auf den passenden opt-wert), soll er eine neue zeile hinzufügen und als value den vom letzten verfügbaren Tag nehmen, minus 10%. Geht das in einem mySQL Befehl? INSERT ON DUPLICATE KEY wird nicht gehen, weil der Wert auf den es ankommt das datum in zusammenhang mit dem opt-wert ist.
Ist recht komplex, deshalb ein beispiel
[table="width: 500, class: grid"]
[tr]
[td]id[/td]
[td]date[/td]
[td]opt[/td]
[td]value[/td]
[/tr]
[tr]
[td]1[/td]
[td]01.01.2017[/td]
[td]1[/td]
[td]2348[/td]
[/tr]
[tr]
[td]2[/td]
[td]01.01.2017[/td]
[td]2[/td]
[td]236[/td]
[/tr]
[tr]
[td]3[/td]
[td]01.01.2017[/td]
[td]3[/td]
[td]5492[/td]
[/tr]
[tr]
[td]4[/td]
[td]02.01.2017[/td]
[td]1[/td]
[td]2390[/td]
[/tr]
[tr]
[td]5[/td]
[td]02.01.2017[/td]
[td]2[/td]
[td]200[/td]
[/tr]
[tr]
[td]6[/td]
[td]02.01.2017[/td]
[td]3[/td]
[td]6000[/td]
[/tr]
[/table]
Beispiel 1: es ist der 02.01.2017.
Die Werte date=02.01.2017 opt=2 und value=500 werden übergeben
dann soll auf zeile fünf ein update erfolgen und value von 200 auf 500 angehoben werden
Beispiel 2: es ist der 02.01.2017
Die Werte date=02.01.2017 opt=3 und value=4076 werden übergeben
dann soll nichts passieren, weil in zeile 6 value bereits auf 6000 ist und 4076 kleiner ist
Beispiel 3: es ist der 03.01.2017
Die Werte date=03.01.2017 opt=2 und value=300 werden übergeben
dann soll eine neue zeile angelegt werden, da für den 03.01.2017 und opt=2 noch kein eintrag existiert,
id wird wegen auto_increment 7, opt=2 und value 300
Beispiel 4: es ist der 03.01.2017
Die Werte date=03.01.2017 opt=3 und value=4000 werden übergeben
dann soll eine neue zeile angelegt werden, da für den 03.01.2017 und opt=3 noch kein eintrag existiert,
allerdings ist 6000 - 10% 5400 und größer als 4000, daher sollen
id=7, opt=3 und value=5400 angelegt werden
Beispiel 5: es ist der 04.01.2017, am 03.01.2017 hat niemand die Anwendung benutzt
Die Werte date=04.01.2017 opt=3 und value=5300 werden übergeben
dann soll eine neue Zeile angelegt werden, da für den 04.01.2017 und opt=3 noch kein eintrag existiert,
allerdings sind 2 Tage vergangen, d.h. 6000 - 10% - 10% ist 4860 und 5300 ist größer, d.h.
id=7, opt=3 und value=5300
Hat jemand von euch die Fähigkeit, dass in eine Formel zu packen?
ich habe folgende Tabelle
Code:
id (unique, autoincrement), date, opt, value
die id ist unique,
das Datum gibt den aktuellen Tag an,
opt, kann die Werte 1, 2, oder 3 annehmen,
value ist ein beliebig großer int
Ich möchte, dass am gleichen Tag (date), die zeile mit dem passenden opt-wert ein update erfährt, wenn valuegrößer ist, als in der Tabelle hinterlegt. Wenn es für den aktuellen Tag keinen datum gibt (wieder in bezug auf den passenden opt-wert), soll er eine neue zeile hinzufügen und als value den vom letzten verfügbaren Tag nehmen, minus 10%. Geht das in einem mySQL Befehl? INSERT ON DUPLICATE KEY wird nicht gehen, weil der Wert auf den es ankommt das datum in zusammenhang mit dem opt-wert ist.
Ist recht komplex, deshalb ein beispiel
[table="width: 500, class: grid"]
[tr]
[td]id[/td]
[td]date[/td]
[td]opt[/td]
[td]value[/td]
[/tr]
[tr]
[td]1[/td]
[td]01.01.2017[/td]
[td]1[/td]
[td]2348[/td]
[/tr]
[tr]
[td]2[/td]
[td]01.01.2017[/td]
[td]2[/td]
[td]236[/td]
[/tr]
[tr]
[td]3[/td]
[td]01.01.2017[/td]
[td]3[/td]
[td]5492[/td]
[/tr]
[tr]
[td]4[/td]
[td]02.01.2017[/td]
[td]1[/td]
[td]2390[/td]
[/tr]
[tr]
[td]5[/td]
[td]02.01.2017[/td]
[td]2[/td]
[td]200[/td]
[/tr]
[tr]
[td]6[/td]
[td]02.01.2017[/td]
[td]3[/td]
[td]6000[/td]
[/tr]
[/table]
Beispiel 1: es ist der 02.01.2017.
Die Werte date=02.01.2017 opt=2 und value=500 werden übergeben
dann soll auf zeile fünf ein update erfolgen und value von 200 auf 500 angehoben werden
Beispiel 2: es ist der 02.01.2017
Die Werte date=02.01.2017 opt=3 und value=4076 werden übergeben
dann soll nichts passieren, weil in zeile 6 value bereits auf 6000 ist und 4076 kleiner ist
Beispiel 3: es ist der 03.01.2017
Die Werte date=03.01.2017 opt=2 und value=300 werden übergeben
dann soll eine neue zeile angelegt werden, da für den 03.01.2017 und opt=2 noch kein eintrag existiert,
id wird wegen auto_increment 7, opt=2 und value 300
Beispiel 4: es ist der 03.01.2017
Die Werte date=03.01.2017 opt=3 und value=4000 werden übergeben
dann soll eine neue zeile angelegt werden, da für den 03.01.2017 und opt=3 noch kein eintrag existiert,
allerdings ist 6000 - 10% 5400 und größer als 4000, daher sollen
id=7, opt=3 und value=5400 angelegt werden
Beispiel 5: es ist der 04.01.2017, am 03.01.2017 hat niemand die Anwendung benutzt
Die Werte date=04.01.2017 opt=3 und value=5300 werden übergeben
dann soll eine neue Zeile angelegt werden, da für den 04.01.2017 und opt=3 noch kein eintrag existiert,
allerdings sind 2 Tage vergangen, d.h. 6000 - 10% - 10% ist 4860 und 5300 ist größer, d.h.
id=7, opt=3 und value=5300
Hat jemand von euch die Fähigkeit, dass in eine Formel zu packen?