Доброго времени, форум.
Запрос вида
Цитата |
$res=mysql_query("SELECT * FROM prods WHERE cat!='12' AND (cost * 10)<='$ostatok' AND id NOT IN ($notin) ORDER BY rand() LIMIT 1"); |
не проходит. Но это на шару, т.к. даже запрос в поисковике по этому поводу не могу сформировать.
Пишу рэндомизатор. Посетитель вводит сумму, скажем, 2000 рублей, и ему рэндомом формирует меню. Дело осложняется тем, что есть минимальное количество бутербродов при заказе.
Алгоритм: посетитель ввел сумму, пошел цикл do{вычислять} while (остаток>0). В функции я делаю выборку среди позиций, у которых цена меньше остатка средств. И мне нужно поле cost (цена позиции) умножить на минимальное количество при заказе (10). Бутерброд стоит 60 рублей, значит при SELECT'е сравнение ожидается вида 600<$ostatok.
Заранее благодырь.
у вас не бутерброды, у вас мухи в котлетах
_____________
Стимулятор ~yoomoney - 41001303250491
AllesKlar
4.04.2017 - 10:01
Цитата (asdf27 @ 3.04.2017 - 23:51) |
(cost * 10)<='$ostatok' |
Не вникая глубоко и не разгоняя мух:
Из курса высшей математики начальной школы, (cost * 10) <= $ostatok - это тоже самое, что и cost <= $ostatok / 10
_____________
[продано копирайтерам]
walerus
4.04.2017 - 15:04
Что мешает делать все арифметические действия ДО запроса в базу?, а уж потом отсылать запрос.
Пардон, запрос рабочий. Но по итогу, дельного ответа вида "такое допустимо, ищи косяк в синтаксисе" не прозвучало. Первый ответ вообще бред.
Цитата |
Не вникая глубоко и не разгоняя мух: Из курса высшей математики начальной школы, (cost * 10) <= $ostatok - это тоже самое, что и cost <= $ostatok / 10 |
Хорошее замечание, расскажу сыну. "10" условно, переменная принимает разные значения.
Цитата |
Что мешает делать все арифметические действия ДО запроса в базу?, а уж потом отсылать запрос. |
Нет возможности _до. Алгоритм:
1. ты указал бюджет, скажем 5000 рублей.
2. Запрос в базу: Выбрать * из ПРОДУКТОВ где цена*мин.кол-во < 5000 рублей ЛИМИТ 1.
3. Извлекли, отобразили, отрезали стоимость от 5000 рублей. Остаток 4400 р.
4. Гоняем по кругу пока остаток > 0 или условия не удовлетворены.
walerus
4.04.2017 - 21:25
Цитата |
Нет возможности _до. |
Почему же нет?, есть:
1) Дано 5000 тыр
1.1. константа или выборка из базы ограничений, таких как: ( цена, мин.кол-во )
$price = 'цена';
$count_min = 'мин.кол-во'; // остаток
1.2.
$condition = $price * $count_min;
2) Запрос в базу: Выбрать * из ПРОДУКТОВ где $condition < 5000 рублей ЛИМИТ 1.
3) Извлекли, отобразили, отрезали стоимость от 5000 рублей. Остаток 4400 р.
etc...
Всё верно, но не в контексте данной задачи. Мы не знаем заранее мин. кол-во, оно плавает. Где-то 1, где-то 10. И другие варианты.
Выборка рэндомная, мы не знаем что получим. Единственное, записываются излеченные id'шники чтобы не дублировать.
Короче запрос работает, я дальнейшую математику неверно построил, потому был сбит с толку.
AllesKlar
5.04.2017 - 10:06
asdf27
если есть возможность перевести проект на другую субд, Postgresql, например, то сможешь обойтись всего одним рекурсивным запросом.
_____________
[продано копирайтерам]
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.