Staffelpreise Abfrage

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