Peter Mairhofer: mySQL Berechnungen?

Beitrag lesen

Hallo,

Ich habe einen Produktkataglog (t_produkte) und für jedes Produkt gibt es variabel verschiedene Kategorien, Preise, Anzeigedauer, ob es neu ist, ob es ein Featureprodukt ist etc.

Also hab' ich für alle diese Sachen Subtabellen erstellt und mittels normalen LEFT JOINS verknüpft.
Mit WHERE mag ich dann die Suche eingrenzen.

Beim Preis gibt's jetzt verschiedene Möglichkeiten:

  • Es können für ein Produkt mehrere Preise existieren (z.B. High Quality, Low Quality oder so)

  • Es kann für ein Produkt einen Grundpreis geben (z.B. es kostet 50 euro)

  • Es kann in pro Element einen Preis geben (z.B. eine Schachtel Nägel kostet 10 Cent pro Nagel)

  • Es kann eine Kombination aus allem sein (z.B. Zustellservice kostet pauschal 40 Euro und 1 Euro/km)

  • Es wird NOCH komplexer: Es können für einen Eintrag Regeln existieren, z.B. eine Schachtel Nägel kostet 10 Cent pro Nagel; ab 100 Nägel kostet ein Nagel 7 Cent

Nun möchte ich nach allen Kriterien quer durch den Gemüsegarten suchen und abfragen.

Die JOINS scheinen zu funktionieren, zum Schluss habe ich ein GROUP BY ID, dass ich keine doppelten Einträge bekomme.

Aber wie kann ich jetzt z.B. nach allen Produkten suchen, wo ich 53 Einheiten (z.B. Nägel) brauche aber nur 50 bis 60 Euro habe?
(Da soll jetzt auch der Grundpreis und der Preis pro Einheit berücksichtigt werden).

Bei einem Katalog von nur 1000 Produkten bekomme ich bei der Abfrage ca 50000 Zeilen weil es eben so viele verschiedene Möglichkeiten gibt und da ist es nur verständlich, dass ich nicht alle Zeilen in mein Programm laden will (sei es jetzt MFC über ODBC oder ein PHP Script) und dort in der Schleife alle Zeilen durchlaufen und alles probieren.

Und da ja SQL genau diese Powersprache ist müsste das doch gehen oder?

Wie komme ich weiter??

Danke,

Peter

PS: Ich bin schon auf der primitiven Art gescheitert. Es hat nicht mal folgendes funktioniert.
(...)
WHERE
((ts_produkt_preis.grundpreis + (ts_produkt_preis.preiselem * 100)) >= 200) AND ((ts_produkt_preis.grundpreis + (ts_produkt_preis.preiselem * 100)) <= 300)

wenn ich zB 100 Einheiten von einem Produkt will und 200 bis 300 Euro habe...