Пробую сделать каталог на MaxSite CMS и уже который день не могу разобраться с модернизацией запроса, очень прошу помощи знатоков. По умолчанию для одного из типов страниц делается такой SQL запрос: Код (Text): SELECT SQL_BUFFER_RESULT mso_page.`page_id` FROM (`mso_page`) JOIN `mso_page_type` ON `mso_page_type`.`page_type_id` = `mso_page`.`page_type_id` JOIN `mso_meta` ON `mso_meta`.`meta_id_obj` = `mso_page`.`page_id` WHERE page_status = 'publish' AND page_type_name = 'cat_1' AND meta_key = 'tip_sdelki' AND meta_value = 'sale' GROUP BY `mso_page`.`page_id` ORDER BY `page_date_publish` desc Он всем хорош и замечателен, но мне необходимо сделать выборку (с соблюдением всех прочих условий) из таблицы mso_meta по нескольким meta_key и/или meta_value Пробовал видоизменять запрос до вида: Код (Text): SELECT SQL_BUFFER_RESULT mso_page.`page_id` FROM (`mso_page`) JOIN `mso_page_type` ON `mso_page_type`.`page_type_id` = `mso_page`.`page_type_id` JOIN `mso_meta` ON `mso_meta`.`meta_id_obj` = `mso_page`.`page_id` WHERE page_status = 'publish' AND page_type_name = 'cat_1' AND ((meta_key = 'price') AND (meta_key = 'tip_sdelki' AND meta_value = 'sale')) GROUP BY `mso_page`.`page_id` ORDER BY `page_date_publish` desc Но он выдает ошибку. Еще раз, задача заключается в том чтобы выбрать из таблицы mso_meta ID страниц у которых например meta_key = 'price' И (meta_key = 'tip_sdelki' И meta_value = 'sale') И ... может быть еще несколько таких И... В оконцовке чтобы была возможность сгруппировать их и отсортировать по любому из выбранных meta_value... Таблица mso_page: http://shot.qip.ru/005BsF-200arWR/ Таблица mso_page_type: http://shot.qip.ru/005BsF-200arWT/ Таблица mso_meta: http://shot.qip.ru/005BsF-300arWS/
я не знаю ничего про структуру MaxSite, но ошибка здесь: meta_key не может быть одновременно равен разным значениям. переформулируй через OR или там другая колонка должны быть — тебе видней. и еще придерживайся правила: если в запросе участвует несколько таблиц, всегда пиши поля с алиасом таблицы. типа table1.meta_key
Через OR там скорее всего не получится, т.к. нужны именно выборки по нескольким связкам полей meta_key и meta_value. В конце темы я привел скрины таблиц, взгляните пожалуйста. Какие могут тут быть решения? 1) Можно как-то виртуально сделать таблицу на основе выборки из таблицы mso_meta по meta_id_obj, превратить в этой виртуальной таблице все уникальные meta_key в колонки и затем выбирать записи по колонкам? 2) Или проще сделать выборку как есть а дополнительные выборки и сортировки проводить уже над многомерными массивами?