# Problem mit SQL-Abfrage



## cpu32 (1. Jan 2012)

Hallo nochmal,

hab noch ein Problem mit einer SQL-Abfrage :/
Ich probiere ein bisschen mit meinem Warenwirtschaftsprogramm herum , und möchte folgendes machen:

Ich habe folgende Tabellen (für mein Problem wichtige Tabellen ):

Produkte -> Alle Produkte mit Infos, auch Bestands-Infos
Preise -> Zu Produkten gehörige Preise, aber mehrere Preise für ein Produkt (Muss so sein)
Aufträge -> Einzelne Aufträge eines grossen Auftrags, der in Rechnungen gelistet ist, Also "Auftragsprodukte"
Rechnungen -> Große Aufträge
Rechnungen enthält also den eigentlichen Auftrag eines Kunden und in Aufträge sind dann die mit der ID von dem eigentlichen Auftrag verbundenen Teilaufträge/Auftragsprodukte enthalten.

Ich möchte nun überprüfen ob ein Auftrag lieferbereit ist, d.h. ob alle Einzelnen Aufträge verfügbar sind. 
In der Tabelle Produkte sind ja die Bestandsinfos enthalten. Um diese zu erhalten muss ich aber von Rechnungen zunächst aucf Aufträge kommen um alle Einzelaufträge zu erhalten. Von Dort auf Preise um das dem im Auftrag gelisteten Preis zugehörige Produkt zu ermitteln. Dann habe ich Den Bestand eines Produkts eines großen Auftrags. Jetzt muss ich aber überprüfen ob der Bestand denn bis zum aktuell geprüften Auftrag reicht. Desshalb muss ich jetzt wieder für jedes dieser Produkte überprüfen wie oft es in der Tabelle Aufträge als nicht-geliefert (Eine Spalte, da ja bereits gelieferte Produkte nicht mitgezählt werden sollen) bestellt worden ist (Es gibt die Spalte Anzahl -> Also SUM(Anzahl)). Jetzt muss aber auch noch die Prioitäten-Reihenfolge von Rechnungen eingehalten werden, die aber natürlich auch für die einzelenen Auftragsprodukte gillt. 

Ich blicke da nicht mehr durch, wie ich das in SQL schreiben soll ..... Mir brummt der Schädel :/ Hoffentlich kann mir hir jemand helfen... Ich hoffe ich habs einigermaßen vertändlich geschrieben.. Wenn nicht, fragt nach!!

Vielen Dank schon im Vorraus!! 

cpu32


----------



## SlaterB (2. Jan 2012)

Thema noch offen?
musst du das eigentlich alles in ein SQL quetschen, was spricht gegen Java-Verarbeitung?


----------



## fastjack (2. Jan 2012)

1. Hole die Summe aller Produkte in Aufträgen zu einer bestimmten Rechnung (join Rechnungen zu Aufträge, join Aufträge zu Produkte)
2. Hole alle Produkte zu Aufträgen zu einer bestimmten Rechnung (join von Rechnungen zu Aufträge, join von Aufträge zu Produkte where Produkte.Menge > 0)

Die Anzahl der Datensätze von beiden Abfragen muß gleich sein. Eventuell kannst Du die beiden Abfragen verbinden, count's einführen und so weiter, halt Optimieren und so.


----------



## cpu32 (2. Jan 2012)

Danke schon mal für die Antworten!
Werde es dann wirklich mit Java selbst verarbeiten. Ist mir wirklich zu kompliziert... 
Ich dachte blos, dass es vielleicht eine einfache Lösung gibt, die mir als Anfänger nicht bekannt sein. Naja anscheinend nicht wirklich. Danke trotzdem!


----------



## fastjack (2. Jan 2012)

Was ist denn an einer SQL-Abfrage mit ein paar Joins zu kompliziert? Lern es einfach


----------



## SlaterB (2. Jan 2012)

also ich finde das auch wie gesagt kompliziert, was aber vielleicht nur etwas über mich aussagt,

allein ein Satz hinten dran wie


> Jetzt muss aber auch noch die Prioitäten-Reihenfolge von Rechnungen eingehalten werden, die aber natürlich auch für die einzelenen Auftragsprodukte gillt.


welche sich anscheinend nicht nur auf Sortierung sondern Vergabe irgendwelcher begrenzter Mengen bezieht,
stellt alles auf dem Kopf, was immer schon vorher angebracht ist

ohne exakte Kenntnisse kann man natürlich nur raten, alles ist vage formuliert


----------

