Staffelpreise Abfrage
am 14.04.2008 11:22:52 von Tobias
Hallo,
ich bin gerade an der Erweiterung meines Shops.
Leider hänge ich im Moment an der Abfrage zu den Staffelpreisen.
Ich habe folgende Tabelle mit den Spalten:
preis_id*
preis
ab_menge
Mein Problem ist nun wie muss ich die Abfrage aufbauen um bei einer
übergebenen Menge die der Kunde über den Shop gewählt hat, den korrekten
Preis herauszufinden.
Beispiel:
Kunde legt einen Artikel in den Warenkorb mit Menge 105.
Folgende Werte stehen in der Tabelle
preis_id preis ab_menge
1 0.5 1
2 0.4 100
3 0.3 1000
4 0.25 1500
Ich möchte nun den Preis mit der ID 2 = 0.4 herausbekommen als Ergebnis.
Mit Between und einer Tabelle klappt das irgendwie nicht.
Ich bräuchte einen Vergleich zwischen jeweils 2 Einträgen innerhalb
einer Tabelle.
Vielen Dank im Voraus,
Tobias
Re: Staffelpreise Abfrage
am 14.04.2008 11:57:40 von Harald Fuchs
In article ,
Tobias writes:
> Hallo,
(Tobias wer? Hier gehören volle Namen zum guten Ton.)
> Ich habe folgende Tabelle mit den Spalten:
> preis_id*
> preis
> ab_menge
> Mein Problem ist nun wie muss ich die Abfrage aufbauen um bei einer
> übergebenen Menge die der Kunde über den Shop gewählt hat, den
> korrekten Preis herauszufinden.
> Beispiel:
> Kunde legt einen Artikel in den Warenkorb mit Menge 105.
> Folgende Werte stehen in der Tabelle
> preis_id preis ab_menge
> 1 0.5 1
> 2 0.4 100
> 3 0.3 1000
> 4 0.25 1500
> Ich möchte nun den Preis mit der ID 2 = 0.4 herausbekommen als Ergebnis.
> Mit Between und einer Tabelle klappt das irgendwie nicht.
> Ich bräuchte einen Vergleich zwischen jeweils 2 Einträgen innerhalb
> einer Tabelle.
Richtig, Du brauchst eine Zeile mit ab_menge <= 105, für die es keine
größere Zeile gibt, für die auch ab_menge <= 105 gilt:
SELECT p1.preis_id, p1.preis
FROM preise p1
LEFT JOIN preise p2 ON p2.ab_menge > p1.ab_menge
AND p2.ab_menge <= 105
WHERE p1.ab_menge <= 105
AND p2.preis_id IS NULL
Re: Staffelpreise Abfrage
am 14.04.2008 11:58:46 von Harald Wenninger
* Tobias tat kund und zu wissen:
> Beispiel:
> Kunde legt einen Artikel in den Warenkorb mit Menge 105.
> Folgende Werte stehen in der Tabelle
> preis_id preis ab_menge
> 1 0.5 1
> 2 0.4 100
> 3 0.3 1000
> 4 0.25 1500
>
> Ich möchte nun den Preis mit der ID 2 = 0.4 herausbekommen als Ergebnis.
SELECT preis FROM preise
WHERE ab_menge<=105
ORDER BY ab_menge DESC LIMIT 1;
HTH,
Harald
--
Correspondence Corollary:
An experiment may be considered a success if no more than half
your data must be discarded to obtain correspondence with your theory.
Re: Staffelpreise Abfrage
am 14.04.2008 13:04:05 von Tobias
Hallo,
Harald Wenninger schrieb:
> * Tobias tat kund und zu wissen:
>> Ich möchte nun den Preis mit der ID 2 = 0.4 herausbekommen als Ergebnis.
>
> SELECT preis FROM preise
> WHERE ab_menge<=105
> ORDER BY ab_menge DESC LIMIT 1;
>
Super, Vielen Dank so funktioniert es.
Gruss
Tobias