Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] "Widełki" cenowe z ceną promocyjną
Forum PHP.pl > Forum > Bazy danych
qqrq
Witam wszystkich

Mam taką sytuację - jest sobie tabela "produkt", w niej m. in. pola "cena" i "cena_promocyjna". Jeżeli "cena_promocyjna" jest ustawiona na "0", to ceną produktu jest wartość pola "cena", jeśli nie ceną produktu jest "cena_promocyjna", np.:

Produkt: "kosiarka"; cena = 120, cena_promocyjna = 0 => cena produktu to 120 zł
Produkt: "piła"; cena = 150, cena_promocyjna = 110 => cena produktu to 110 zł

Teraz chciałbym jednym zapytaniem wyciągnąć produkty znajdujące się pomiędzy widełkami cenowymi, na przykład "X" i "Y" (X < Y). Dodatkowo dochodzi rabat, na przykład "R", który jest stały dla użytkownika, ale nalicza się go tylko dla cen "nie-promocyjnych". Na przykład, jeśli R=20 (20 procent), to

"kosiarka" => cena produktu to cena*(1-R/100) = 120*0,8 = 96 (zł)
"piła" => cena produktu to cena_promocyjna = 110 zł

Normalnie, bez ceny promocyjnej, wyglądałoby to pewnie mniej więcej tak:

SELECT * FROM produkt WHERE cena*R BETWEEN X AND Y;

A jak to zrobić dla w/w warunków? Ja już się gubię... Eny ajdias?
elemek
Cytat(qqrq @ 21.08.2008, 12:34:09 ) *
Witam wszystkich

Mam taką sytuację - jest sobie tabela "produkt", w niej m. in. pola "cena" i "cena_promocyjna". Jeżeli "cena_promocyjna" jest ustawiona na "0", to ceną produktu jest wartość pola "cena", jeśli nie ceną produktu jest "cena_promocyjna", np.:

Produkt: "kosiarka"; cena = 120, cena_promocyjna = 0 => cena produktu to 120 zł
Produkt: "piła"; cena = 150, cena_promocyjna = 110 => cena produktu to 110 zł

Teraz chciałbym jednym zapytaniem wyciągnąć produkty znajdujące się pomiędzy widełkami cenowymi, na przykład "X" i "Y" (X < Y). Dodatkowo dochodzi rabat, na przykład "R", który jest stały dla użytkownika, ale nalicza się go tylko dla cen "nie-promocyjnych". Na przykład, jeśli R=20 (20 procent), to

"kosiarka" => cena produktu to cena*(1-R/100) = 120*0,8 = 96 (zł)
"piła" => cena produktu to cena_promocyjna = 110 zł

Normalnie, bez ceny promocyjnej, wyglądałoby to pewnie mniej więcej tak:

SELECT * FROM produkt WHERE cena*R BETWEEN X AND Y;

A jak to zrobić dla w/w warunków? Ja już się gubię... Eny ajdias?


  1. SELECT * FROM produkt WHERE (cena_promocyjna = 0 AND cena*(1-R) BETWEEN x AND y) OR (cena_promocyjna != 0 AND cena_promocyjna BETWEEN x AND y)
LBO
Kod
cena*(100-R/100)
qqrq
Cytat(elemek @ 21.08.2008, 12:39:46 ) *
  1. SELECT * FROM produkt WHERE (cena_promocyjna = 0 AND cena*(1-R) BETWEEN x AND y) OR (cena_promocyjna != 0 AND cena_promocyjna BETWEEN x AND y)


Dzięks, oczywista oczywistość, jak mówią niektórzy. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.