Hallo alle miteinander,
ich habe ein Problem mit einer Tabellenfunktion. Es geht um Angebot und Nachfrage. In meiner Tabelle "orderbook" vorhanden sind stock_id, stock_price, stock_count, ordertype, time, usr_id, order_id. "ordertype" hat 1 oder 0 zur Auswahl. 0 steht für Verkauf, 1 für Kauf. In der Tabelle habe ich mehrere Produkte (stock_id) stehen, dazu die Preise zu denen sie gehandelt werden und die Mengen (stock_count). Anhand von ordertype wird erkannt, ob es sich um einen Kauf oder Verkauf handelt. In der Variable $umsatz ist halt der Umsatz gespeichert, in $differenz der Unterschied zwischen der Umsatzmenge und dem höheren Angebot/der höheren Nachfrage. Dazu gleich mehr im Beispiel
Wir haben im Beispiel 2 Produktgruppen. 1 = Bananen, 2 = Äpfel. Es können auch mal andere Gruppen hinzukommen.
In der Tabelle steht nun (vereinfacht - stock_id, stock_price, stock_count und ordertype)
1 - 0,44 € - 10 - 1
1 - 0,44 € - 12 - 1
1 - 0,44 € - 20 - 0
2 - 0,90 € - 18 - 0
2 - 0,90 € - 3 - 0
2 - 0,90 € - 17 - 1
Wir sehen, dass das Angebot bei ID 1 (Bananen) 20 Einheiten beträgt, die Nachfrage 22 Einheiten. Der Umsatz wäre also 20 Einheiten, die Differenz betrüge 1.
Bei ID 2 (Äpfel) beträgt das Angebot 21 Einheiten, die Nachfrage 17. Umsatz wäre 17, Differenz sei 4.
Entsprechend müssen bei den Bananen 1 Einheit, bei den Äpfeln 4 Einheiten abgezogen werden. Es soll eben ein Gleichstand zwischen Angebot und Nachfrage erreicht werden.
Wie das geschehen soll, habe ich in einer "Denktschrift" niedergeschrieben:
"Solange $Buy>$Sell bzw. $Sell>$Buy ist, soll der jeweils letzte, demnach jüngste Eintrag verkleinert (sofern SUM(x)<Differenz)
oder gelöscht werden (sofern SUM(x)>Differenz)."
Ich hoffe, man versteht, was ich meine. Mein Problem ist unter anderem, wie ich eine Unterscheidung herbeiführe wegen der Produkt-IDs. Ich würde mit einer WHILE-Schleife arbeiten, jedoch ist das eine recht komplexe Sache. Darum habe ich leider auch kaum Ansätze. Dafür bitte ich um Verzeihung.
Vielleicht hat jemand einen Ansatz für mich. Wenn jemand eine komplette Lösung bieten würde, würde ich mich natürlich revanchieren, auch wenn es mir unangenehm und doch wieder genehm wäre.
Beste Grüße,
Christian