![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
CruorVult |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 868 Регистрация: 24.9.2008 Где: г.Киев, Украина Репутация: 1 Всего: 28 |
Котелок вообще не варит
![]() есть таблица с товарами gds (для визуализации) id | name -------------- 1 | Toshiba AC100-117 2 | Acer Aspire One 3 | ASUS Eee есть таблица с товарами filters (для визуализации) id | name -------------- 1 | Toshiba 2 | Acer 3 | ASUS .... | есть таблица gds_filters : gds_id - товар изg ds filter_id - из filters id | gds_id | filter_id 1 | 1 | 1 2 | 2 | 2 3 | 3 | 3 15 | 3 | 15 14 | 2 | 17 13 | 1 | 15 Мне нужно посчитать количество товаров по каждому фильтру. Фильтры группированные, тоесть filter_id = 1,2,3 из одной группы, filter_id = 15,16,17 - из другой К примеру пришел фильтр (filter_id = 1) было filter_id = 1 (1) filter_id = 2 (1) filter_id = 3 (1) filter_id =15 (2) filter_id =16 (0) filter_id =17 (1) должно посчитать filter_id = 1 (1) filter_id = 2 (1) filter_id = 3 (1) filter_id =15 (1) filter_id =16 (0) filter_id =17 (0) Тоесть не смотря на то что filter_id = 1, в filter_id = 2, 3 количество остается таким же, т.к. они находятся в одной группе а вот filter_id = 15, 17 уменьшается. распределение по группам уже готово, тоесть если пришли фильтры 1,2,17 то распределяется так (1,2) и (17) |
|||
|
||||
CruorVult |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 868 Регистрация: 24.9.2008 Где: г.Киев, Украина Репутация: 1 Всего: 28 |
ну что, предложений нету?
а то вытаскивать всё скриптом пару тыщ записей и обрабатывать скриптом не оч... |
|||
|
||||
CruorVult |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 868 Регистрация: 24.9.2008 Где: г.Киев, Украина Репутация: 1 Всего: 28 |
вот придумал такое, если пришли фильтры 1 и 17
Это сообщение отредактировал(а) CruorVult - 27.5.2011, 12:51 |
|||
|
||||
CruorVult |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 868 Регистрация: 24.9.2008 Где: г.Киев, Украина Репутация: 1 Всего: 28 |
в вышеуказаном варианте работает не очень быстро....
когда в таблице gds_filters 35к записей то запрос выполняется 0.2-1.5 сек Что никто раньше с фильтрами не сталкивался? такое чувство что я общаюсь сам с собой ![]() |
|||
|
||||
patap |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 893 Регистрация: 7.5.2005 Где: Украина, Зп Репутация: 3 Всего: 40 |
здается мне, что народ не может въехать, что такое группы и зачем оно, по крайней мере я ничего не понял: что там группируется, зачем, какие-то абстрактные группы, зачем их учитывать в запросе, ну и т.д.
чем не устроит такой запрос?
Добавлено через 1 минуту и 35 секунд пришло 3 фильтра с ид равными: 1, 2 и 17 взяли и посчитали сколько товаров относится к каждому из фильтров. или я недогоняю что к чему )) -------------------- На боку кобура болталась, сзади шашка отцовская звякала. Впереди меня все хохотало, а позади все плакало (с) |
|||
|
||||
CruorVult |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 868 Регистрация: 24.9.2008 Где: г.Киев, Украина Репутация: 1 Всего: 28 |
Есть у нас группа "Производитель":
Производитель (filter_id=1, filter_id=2, filter_id=3) ASUS (1) (filter_id=1) Acer (1) (filter_id=2) Toshiba (1) (filter_id=3) есть группа "Тип" Тип (filter_id=15, filter_id=17, filter_id=18) Tablet PC (0) (filter_id=18) Нетбук (2) (filter_id=15) Ноутбук (1) (filter_id=17) К примеру пришел фильтр (filter_id = 1) и посчитало так: Производитель ASUS (1) (filter_id=1) Acer (1) (filter_id=2) Toshiba (1) (filter_id=3) Тип Tablet PC (0) (filter_id=18) Нетбук (1) (filter_id=15) Ноутбук (0) (filter_id=17) Его имеет только товар "ASUS Eee", значит посчитало 1. На остальные фильтры из этой группы пришедший фильтр не влияеет т.к. они находится в одной группе. С другими же группами происходит обыный подсчет. Фильтр "Нетбук" имеет 2 товара: ASUS Eee и Toshiba AC100-117. Но т.к. нам нужны товары только с фильтром "ASUS", то соответственно посчитало (1). Это сообщение отредактировал(а) CruorVult - 30.5.2011, 11:30 |
|||
|
||||
CruorVult |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 868 Регистрация: 24.9.2008 Где: г.Киев, Украина Репутация: 1 Всего: 28 |
Можно тему отзеркалить в разделе Базы Данных -> MySQL. Может так кто-то поможет.
|
|||
|
||||
CruorVult |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 868 Регистрация: 24.9.2008 Где: г.Киев, Украина Репутация: 1 Всего: 28 |
Сделал...
всем ГРОМНОЕ СПАСИБО! За идеи, за подсказки! Без ВАС бы не получилось ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |