[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Условие в запросе
braindbrigada
Добрый день!

Суть такова: При помощи WHERE нужно выбрать id из таблицы, но учитывая значения в price (обычная цена) и sale (цена оптовая).

по умолчанию sale = 0.00

Передали некое значение:
$min_price = 1000;
$max_price = 2000;


Если sale = 0.00 то выбор идет по price:

SELECT id FROM products WHERE price >= $min_price AND price <= $max_price


но если sale > 0.00 то выбор идет по sale:

SELECT id FROM products WHERE sale >= $min_price AND sale <= $max_price


Как сделать правильный WHERE?

Всех с праздниками! :)
Valick
SELECT id FROM products WHERE price = $price OR sale = $price


И в SQL равно это " = ", а не " == "

_____________
Стимулятор ~yoomoney - 41001303250491
braindbrigada
Valick, да верно так правильно! Не правильно в первом сообщении описал задачу. Сейчас поправил.

id | price | sale
1 | 3000 | 1000
2 | 1200 | 0
3 | 800 | 0
4 | 3000 | 2500

Нужно выбрать id: 1 (по sale), 2 (по price)
Valick
braindbrigada, а ничего что 1200 как бы не равно 1000 ???

_____________
Стимулятор ~yoomoney - 41001303250491
braindbrigada
Valick, нет нормально. Условия изменились.

SELECT id FROM products WHERE price >= $min_price AND price <= $max_price
Valick
Цитата (braindbrigada @ 6.01.2015 - 12:29)
Valick, нет нормально. Условия изменились.

имеет ли смысл отвечать на ваши вопросы, если условия постоянно меняются?



_____________
Стимулятор ~yoomoney - 41001303250491
braindbrigada
Цитата (braindbrigada @ 6.01.2015 - 09:16)
Valick, да верно так правильно! Не правильно в первом сообщении описал задачу. Сейчас поправил.

Ну я же написал об этом!
Если ломает... Спасибо за помощь!
Valick
Цитата (braindbrigada @ 6.01.2015 - 12:34)
Если ломает... Спасибо за помощь!

ок, хотя в принципе я вам уже ответил на вопрос, надо только чуть чуть поправить. Надеюсь ума хватит не только на гонор.

_____________
Стимулятор ~yoomoney - 41001303250491
braindbrigada
Valick, уж не так ли?

SELECT id FROM products WHERE (price >= $min_price AND price <= $max_price) OR (sale >= $min_price AND sale <= $max_price)


Это не то... Выбор всех получится.
Valick
Цитата (braindbrigada @ 6.01.2015 - 12:45)
Это не то... Выбор всех получится.

у меня работает
SELECT * FROM `prise_sale` WHERE (price >= 1000 AND price <= 2000) OR (sale >= 1000 AND sale <= 2000)

_____________
Стимулятор ~yoomoney - 41001303250491
Alchemist
Valick, у тебя работает потому что ТС дал плохой пример. Добавь в его таблицу еще одну строку, и работать перестанет:
id	| price | sale
1 | 3000 | 1000
2 | 1200 | 0
3 | 800 | 0
4 | 3000 | 2500
5 | 1200 | 800

Valick
Цитата (Alchemist @ 6.01.2015 - 14:19)
Добавь в его таблицу еще одну строку, и работать перестанет

Вы не правы, запрос работает и именно так как я задумал, другое дело, что я от ТС не могу добиться чёткого ТЗ ... "то у вас собаки лают, то у вас руины говорят"

Лёгким движением руки запрос превращается:
SELECT * FROM `prise_sale` WHERE (price >= 1000 AND price <= 2000 AND sale = 0) OR (sale >= 1000 AND sale <= 2000)




_____________
Стимулятор ~yoomoney - 41001303250491
mvg
Попробуйте запрос с условием if или case. Вполне может оказаться написанный на коленки такой запрос:
SELECT id FROM product WHERE IF(sale>0.00, sale, price) >= $min_price AND price <= $max_price;
sergeiss
mvg, в твоем запросе вторая часть условия не учитывает sale smile.gif А вообще, Valick уже написал правильное условие (согласно ТЗ), очень наглядное и однозначное.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
volter9
Цитата (mvg @ 6.01.2015 - 16:39)
Попробуйте запрос с условием if или case. Вполне может оказаться написанный на коленки такой запрос:
SELECT id FROM product WHERE IF(sale>0.00, sale, price) >= $min_price AND price <= $max_price;


Цитата (sergeiss @ 6.01.2015 - 16:46)
mvg, в твоем запросе вторая часть условия не учитывает sale  А вообще, Valick уже написал правильное условие (согласно ТЗ), очень наглядное и однозначное.


Цитата (Valick @ 6.01.2015 - 15:37)
Лёгким движением руки запрос превращается


SELECT id FROM product WHERE IF(sale>0.00, sale, price) BETWEEN $min_price AND $max_price;


:rolleyes:

P.S.: У меня опять смайлы не работают :(

_____________
Мой блог
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.