[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Где формировать данные?
akruteckij
Всем привет!

У меня проблема с формированием массива данных.
1. Есть интернет магазин;
2. Каталог с 2-х уровневой структурой категорий, каждая категория имеет свойство "скидка, %";
3. Товары в категориях, у товара есть свойства "цена", "специальная цена", "скидка, %", "валюта".
4. На сайте есть сортировка по стоимости товара + фильтр по стоимости.

Как вы понимаете чтобы получить текущую стоимость товара надо учитывать все выше приведённые факторы, т.е. наличие скидки в категории 1-ого уровня потом в категории 2-ого уровня потом скидки у самого товара далее наличие специальной цены и при всё при этом ещё пересчитать стоимость в рублях с учётом валюты.

На данный момент начал реализацию этого при помощи введения доп. поля curprice у каждого товара и пересчёт идёт как при добавлении товара так и при изменении курса валюты или изменениях скидок в категориях, получается как-то запутанно.

Может стоит формировать массив товаров на php и уже в нём делать все расчёты и потом работать с ним а не непосредственно с БД?

Или ещё как-нибудь?

Что скажите, какие идеи?



Спустя 1 час, 5 минут, 7 секунд (4.11.2010 - 19:25) Guest написал(а):
Ну если в базе не десятки тысяч наименований, то почему бы не формировать цену при выборке данных ?

ЕСЛИ(спец.цена, спец.цена, цена) * скидка1 * скидка2 * валюта КАК реальная_цена

и сортировать и фильтровать по "реальной_цене" разумеется

Спустя 12 минут, 46 секунд (4.11.2010 - 19:38) sergeiss написал(а):
Лучше, чтобы в БД всё было сделано. Потому что как только часть логики сажаем в БД, а часть в скрипт, то тут же получаем "грабли". На которые потом встанем. Обязательно, причем smile.gif

Спустя 7 минут, 39 секунд (4.11.2010 - 19:45) akruteckij написал(а):
БД MySQL.
Если совсем всё отдавать на откуп БД тогда наверно надо писать тригеры, не уверен что их поддерживает хостинг провайдер.
Так что наверно от скриптов не отделаться.

Спустя 1 час, 7 минут, 24 секунды (4.11.2010 - 20:53) sergeiss написал(а):
Насчет триггеров не понял ничё... Зачем они тут?

Скорее всего, надо будет создать сколько-то вьюшек (VIEW) и в итоге сделать один запрос, возможно, 16-этажный. Но триггеры тут не вижу, где использовать можно.

Спустя 3 часа, 32 минуты, 14 секунд (5.11.2010 - 00:25) akruteckij написал(а):
Ну как вариант можно наверно завести служебную таблицу с текущей ценой в рублях и при изменении каких-либо данных влияющих на стоимость товара делать перерасчёт используя триггеры...

Спустя 19 минут, 15 секунд (5.11.2010 - 00:44) SlavaFr написал(а):
Если алгоритм подщета решаем в базе данных, то там его и надо решать.
Цитата (akruteckij @ 4.11.2010 - 15:20)
На данный момент начал реализацию этого при помощи введения доп. поля curprice у каждого товара и пересчёт идёт как при добавлении товара так и при изменении курса валюты или изменениях скидок в категориях, получается как-то запутанно.

Ткое делать можно, но только в том случае, если подщет нормальными запросами sql невозможен или подщет перегружает базу данных и слишком медленный. В любом случае если ты решил так делать, то сразу пиши такую документацию и коментарии в коде, в таблице и в поле, чтоб их и в темноте было видно. Решение при помощи тригера не очень хорошо, так как база зделана для хренения данных а sql для их извечения, дополнения и изменения. Тригер это запрятаная интеграция программной лигики в хранилище данных, именно там, где программной логики быть не должно.

Ну а теперь покажи полную структуру таблиц с описанием foreign key и индексов, а также опиши досконально алгоритм подсчета.
Не исключено, что все легко решается обычными оптимированными запросами
Быстрый ответ:

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