Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie sql
Forum PHP.pl > Forum > Bazy danych > MySQL
hopsey
Hej wszystkim

mam tabelę produktów z polami:

- id
- nazwa
- promocja (bool)
- cena_promocyjna (float)
- cena (float)

robię wyszukiwarkę (wyszukuje również po cenie) i chcę aby w przypadku produktów gdzie prmocja = 1 porównywał do cena_promocyjna, natomiast gdy promocja = 0 - cena.

próbowałem sklecić coś takiego

  1.  
  2. SELECT * FROM `produkty` WHERE (`promocja` = 1 AND `cena_promocyjna` = ?) OR (`promocja` = 0 AND `cena` = ?)
  3.  


ale nie działa tak jak bym chciał :/

może lepiej zaznaczać te, które spełniają kryteria w obu przypadkach i resztę robić w kodzie? Model produktu ma metodę Produkt::getPrice() która wykrywa czy jest promocja i zwraca właściwe pole.

ktoś ma może jakiś pomysł/sugestię?

Z góry dzięki!
toaspzoo
Co dokładniej byś chciał wyszukać ?

Kod
SELECT * FROM `produkty` WHERE (`promocja` = '1' AND `cena_promocyjna` = '$wysz_cena') OR (`promocja` = 0 AND `cena` = '$wysz_cena')


gdzie

Kod
$wysz_cena = $_GET['cena'];


$_GET/POST cena - to zmienna do wyszukania wink.gif

pzdr
hopsey
dzięki toaspzoo, użyłem znaków zapytania, żeby pokazać, w którym miejscu wrzucam cenę. Samo zapytanie jest skonstruowane błędnie.

Nikt nie ma żadnych pomysłów?
toaspzoo
$pokaz = SELECT......

Zrób to zapytanie, a potem daj

$wiersz = mysql_fetch_array($pokaz);

Wyrzuci Ci wtedy wiersze kolumny w tablicy [0-x] / ['wiersz']

np.

$cena = $wiersz['cena_promocyjna'];
$s_cena = $wiersz['cena'] // ale widzę, że nie masz pola na starą cenę wink.gif

$roznica = $s_cena - $cena;

Jeśli nie wiesz, którą cene ma wyświetlić, to zrób na if if(!empy($wiersz['cena_promocyjna'])) { kod... }
pmir13
Na czym konkretnie polega nieprawidłowość tego zapytania ze startera?
Nawiasy nie są potrzebne, bo AND ma wyższy priorytet niż OR, ale poza tym drobnym szczegółem powinno działać dobrze, o ile tylko dobrze podstawiasz cenę do porównania.
"Nie działa tak jakbym chciał" to bardzo ogólne określenie. Może sprecyzuj - dla takich i takich danych zapytanie zwraca to i to, a chciałbym by zwracało to i to.
hopsey
sorry - okazuje się, że zapytanie jednak działa. musiałem zrobić wcześniej jakąś literówkę.

temat do usunięcia.

dzięki!
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.