Помогите пожалуйста поправить SQL запрос

12
f0x
На сайте с 20.09.2006
Offline
116
f0x
#11

Что-то близко, НО с подселектами и юнион время генерации страницы возросло втрое, по сравнению с простым вариантом выборки групп и дополнительным запросом для каждой группы (10 групп +10 дополнительных запросов к БД)

еще и подумаешь зачем изыски в один запрос если будут тормоза.......

DA
На сайте с 19.05.2011
Offline
8
#12

f0x, а что мешает сделать промежуточную таблицу (или добавить в таблицу с группами доп. поле с ценой группы) и обновлять ее при изменении цен/товаров?

f0x
На сайте с 20.09.2006
Offline
116
f0x
#13
DmitryAnt:
f0x, а что мешает сделать промежуточную таблицу (или добавить в таблицу с группами доп. поле с ценой группы) и обновлять ее при изменении цен/товаров?

Это в идеале, то как нужно было делать с самого начала)))

Выгрузка всего добра из 1с идет и сделать "как надо" сейчас - уже затруднительно, много переделывать нужно, поэтому и делаем костыли.

T
На сайте с 01.10.2004
Offline
73
#14

Очень просто:

select g.title, IFNULL(min(c.price), 0) as price from groups g LEFT JOIN catalog c ON c.group_id=g.id AND c.price>0 group by c.group_id

Только я связал по id группы, а не по названию. Зачем в вашем случае эта денормализация - не понятно.

B
На сайте с 27.09.2011
Offline
38
#15
f0x:
Что-то близко, НО с подселектами и юнион время генерации страницы возросло втрое, по сравнению с простым вариантом выборки групп и дополнительным запросом для каждой группы (10 групп +10 дополнительных запросов к БД)

еще и подумаешь зачем изыски в один запрос если будут тормоза.......

Индексы пробовали добавить к groups.title и catalog.type?

T
На сайте с 01.10.2004
Offline
73
#16

Bearburger, вы считаете тот ахтунг с юнионами, который привели в качестве решения стоит вообще как-то оптимизировать?

М
На сайте с 08.02.2006
Offline
59
#17


SELECT AA.*,IFNULL((SELECT MIN(price) FROM catalog WHERE price>0 AND type=AA.title LIMIT 1),0) minprice FROM groups AA

Не обратил внимание, что поля для связи указаны в посте

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий