[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Умножение при SELECT
asdf27
Доброго времени, форум.

Запрос вида
Цитата
$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.

Заранее благодырь.
Valick
у вас не бутерброды, у вас мухи в котлетах

_____________
Стимулятор ~yoomoney - 41001303250491
AllesKlar
Цитата (asdf27 @ 3.04.2017 - 23:51)
(cost * 10)<='$ostatok'

Не вникая глубоко и не разгоняя мух:
Из курса высшей математики начальной школы, (cost * 10) <= $ostatok - это тоже самое, что и cost <= $ostatok / 10



_____________
[продано копирайтерам]
walerus
Что мешает делать все арифметические действия ДО запроса в базу?, а уж потом отсылать запрос.
asdf27
Пардон, запрос рабочий. Но по итогу, дельного ответа вида "такое допустимо, ищи косяк в синтаксисе" не прозвучало. Первый ответ вообще бред.

Цитата
Не вникая глубоко и не разгоняя мух:
Из курса высшей математики начальной школы, (cost * 10) <= $ostatok - это тоже самое, что и cost <= $ostatok / 10


Хорошее замечание, расскажу сыну. "10" условно, переменная принимает разные значения.


Цитата
Что мешает делать все арифметические действия ДО запроса в базу?, а уж потом отсылать запрос.


Нет возможности _до. Алгоритм:
1. ты указал бюджет, скажем 5000 рублей.
2. Запрос в базу: Выбрать * из ПРОДУКТОВ где цена*мин.кол-во < 5000 рублей ЛИМИТ 1.
3. Извлекли, отобразили, отрезали стоимость от 5000 рублей. Остаток 4400 р.
4. Гоняем по кругу пока остаток > 0 или условия не удовлетворены.
walerus
Цитата
Нет возможности _до.
Почему же нет?, есть:
1) Дано 5000 тыр
1.1. константа или выборка из базы ограничений, таких как: ( цена, мин.кол-во )
$price = 'цена';
$count_min = 'мин.кол-во'; // остаток
1.2.
$condition = $price * $count_min;
2) Запрос в базу: Выбрать * из ПРОДУКТОВ где $condition < 5000 рублей ЛИМИТ 1.
3) Извлекли, отобразили, отрезали стоимость от 5000 рублей. Остаток 4400 р.
etc...
asdf27
Всё верно, но не в контексте данной задачи. Мы не знаем заранее мин. кол-во, оно плавает. Где-то 1, где-то 10. И другие варианты.

Выборка рэндомная, мы не знаем что получим. Единственное, записываются излеченные id'шники чтобы не дублировать.

Короче запрос работает, я дальнейшую математику неверно построил, потому был сбит с толку.
AllesKlar
asdf27
если есть возможность перевести проект на другую субд, Postgresql, например, то сможешь обойтись всего одним рекурсивным запросом.

_____________
[продано копирайтерам]
asdf27
Спасибо, AllesKlar
Быстрый ответ:

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