Einzelnen Beitrag anzeigen

Benutzerbild von LoewenZahn
LoewenZahn

Registriert seit: 10. Okt 2013
22 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Komplizierte Mysql-Abfrage

  Alt 21. Mär 2014, 13:53
Datenbank: Mysql • Version: 2.9 • Zugriff über: Delphi
Und nun stoße ich an meine Grenzen.

Ich habe ein Problem mit meinem zu bearbeitenden Daten und benötige nun eine Abfrage doch diese scheint weit über meine Kompetenz zu gehen.

Zur Frage warum die Datenbank so aufgebaut ist und warum ich nicht einfach die Struktur verbessere: Die Daten sind schon so vorhanden und sollen nun vom Programm aus aufgeräumt werden.

Also, ich habe eine Datenmenge/Archiv mit Artikeln. Dort sind Artikel mit einer Bestellanzahl enthalten, nun gibt es aber zu einer Menge Rueckstände, daher will ich die Tabelle aufräumen:

Code:
+-----------+------------+--------+------------+    +-----------+------------+--------+------------+ 
| Archiv_id | Artikel_id | Anzahl | Rueckstand |    | Archiv_id | Artikel_id | Anzahl | Rueckstand |
+-----------+------------+--------+------------+    +-----------+------------+--------+------------+
|     0     |    101     |   1    |     4      |    |     0     |    101     |   0    |     0      |
|     1     |    101     |   2    |     0      |    |     1     |    101     |   0    |     0      |
|     2     |    101     |   2    |     0      | -> |     2     |    101     |   1    |     0      |
|     3     |    103     |   1    |     0      |    |     3     |    103     |   1    |     0      |
|     4     |    104     |   1    |     2      |    |     4     |    104     |   0    |     0      |
|     5     |    104     |   2    |     0      |    |     5     |    104     |   1    |     0      |
+-----------+------------+--------+------------+    +-----------+------------+--------+------------+
Was ist passiert? Es wurde ein Rueckstand zu einer Artikel_id betrachtet, folglich wurden solange Anzahlen zu diesem Artikel abgezogen, bis der Rueckstand eleminiert ist. Der Rest bleibt stehen.

Wie könnte man dies am besten via Mysql realisieren?

Mein eigener Ansatz bestand darin, dass ich ...
1. für jeden Artikel mit Rueckstand die Datensätze durchgehe. Also einmal alle mir 101 und einmal alle mit 104.
2. Dann vll die Summe(Anzahl) - Rueckstand
3. Alle Datensätze mit Anzahl auf 0
4. Einen einzelnen Datensatz mit Anzahl auf das Ergebnis von Punkt 2.

Das muss doch einfacher gehen? Ungern würde ich dutzende von Mysqlbefehlen nutzen sondern lieber einen einzigen.


Dann mal los eventuell gibts ja eine einfache Methodik oder Funktion die sich hier super anwenden lässt, mir allerdings noch unbekannt ist.

Gruß
Tim
Passwörter sind wie Unterwäsche. Du darfst sie keinen sehen lassen, musst sie regelmäßig wechseln und solltest sie nicht mit Fremden tauschen.
  Mit Zitat antworten Zitat