Wie löse ich komplizierte Where-Klauseln? (MySQL)

Hallo Forummer!

Ich hab das Problem, dass ich aus einer Tabelle (MySQL) Sätze selektieren soll, die aber einem ziemlich komplizierten Filter zugrundeliegen.
(Besteht aus mehreren Case-Zweigen, geschachtelten If-Abfragen und einer While-Schleife.)

Die krieg ich doch unmöglich in eine Where-Klausel, oder?
Oder gehts nicht anders, als doch alle Sätze zu selektieren und danach innerhalb des Ergebnis-Arrays zu selektieren?
(Sehr mühsam und langsam (?), da ca. 250.000 Sätze!)

Die krieg ich doch unmöglich in eine
Where-Klausel, oder?

Schreib mal genau was das Zeugs tun soll, vielleicht kann dir dann jemand helfen das direkt in SQL umzusetzen. :smile:

Eigentlich kann man mit SQL schon recht viel realisieren, kann halt passieren das Statements rauskommen die nachher kein Mensch mehr lesen kann. :smile:

Grüße, Robert

Ok, Leute, hier die genauere Beschreibung, was in einem SQL-Statement ablaufen soll:

In den Feldern der Kundendatei sind folgende Felder relevant:

Kundennr (num. 6-stellig, eindeutig)
Sofortbonus (in Prozent)
Sonderrabatt (in Prozent)
Sonderbonus (in Prozent)
Staffelrabatt1 - 6 (DM-Umsatz)

In der Artikelbonus-Datei sind folgende Felder relevant:

Artikel-Nr (num. 6-stellig, eindeutig)
Kundennr (num. 6-stellig, eindeutig)
Nettopreis (DM/1000)
Rabatt (Prozent)

In der Artikeldatei sind folgende Felder relevant:

Artikel-Nr (num. 6-stellig, eindeutig)
Artikel-Verkaufspreis (DM/1000)
Artikel-Verkaufseinheit (x Stück oder Meter)
Artikel-Herstellkosten (DM/1000)

So und jetzt die Berechnungen:

Es soll eine Liste aller Kunden ausgegeben werden, deren gerechneter Artikelpreis kleiner als die Herstellkosten*1.5 sind.

Der Sofortbonus wird sofort auf den Verkaufspreis gewährt.
Ebenso der Sonderrabatt.
Der Sonderbonus auf den bereits rabattierten Preis.
Ist aber ein Nettopreis (Artikelbonusdatei) für den Kunden vorhanden, wird dieser anstatt des Verkaufspreises genommen, aber keinen Sofortbonus mehr gerechnet.
Ist Nettopreis aber leer, wird der Rabatt (Artikelbonusdatei) auf den Verkaufspreis gewährt und weiter wie beim Nettopreis verfahren.
Anschliessend wird der höchste Staffelrabatt genommen (falls vorhanden) und dieser auf den rabattierten Wert gerechnet.

Achja, Felder, die Null enthalten gelten als nicht gefüllt und dürfen nicht für Berechnungen herangezogen werden.

Ok, ist wirklich ziemlich kompliziert (in Wirklichkeit sogar noch etwas komplizierter, aber dann hätte ich hier einen Roman geschrieben (hab ich ja so schon…)).

Dachte mir halt, es wäre einfacher, wenn man allgemein sagen könnte, wie es geht, wenn man mal wirklich eine Abfrage nicht in eine Zeile bekommt. Und das gibt’s sicherlich!

Vielen Dank schonmal.

Knud

Dachte mir halt, es wäre einfacher, wenn
man allgemein sagen könnte, wie es geht,
wenn man mal wirklich eine Abfrage nicht
in eine Zeile bekommt. Und das gibt’s
sicherlich!

Hmmm, was meinst du mit Zeile? Du kannst natürlich einfach in die nächste Zeile gehen. *g*

Falls du mit Zeile SQL-Statement meinst, du kannst mehrere SQL-Statements bzw. deren Ergebnisse über ein UNION (die Ergebnisse müssen strukturverträglich sein) vereinen, schätzomativ wirst du bei deinem Problem sowas tun müssen. Habs probiert, bin dann beim dritten UNION am mangelnden Verständniss deines Problems gescheitert.

Grüße, Robert