Добрый день!
Спецы в MySQL, помогите, плиз, уже второй час торможу...
ПРЕАМБУЛА:
Есть каталог, элементы которого задаются обычными документами MODx с соответствующим набором TV параметров. Например: Вес, стоимость, размер, тип, производитель и т.д.
Фактически весь каталог выводиться просто с помощью Ditto.
Но нужно теперь еще реализовать поиск по каталогу и быстрый.
После нескольких экспериментов, стало очевидно, что для поиска желательно работать непосредственно с базой, а точнее с таблицей модикса: modx_site_tmplvar_contentvalues
ЗАДАЧА:
Нужно построить запрос (или несколько запросов) к таблице modx_site_tmplvar_contentvalues такой, что бы он выдал на гора список contentid, удовлетворяющих запросу на поиск.
Т.е. я получаю поисковый запрос от пользователя, типа:
$pricemax = $_POST[’pricemax’];
$type = $_POST[’type’];
... и т.д. около 10 параметров
Дальше мне нужно найти все документы, TV параметры которых удовлетворяют данному запросу с логикой AND. Вот тут мне нужно применить SELECT, но все торможу, как же его составить....
Дело в том, что таблица modx_site_tmplvar_contentvalues имеет структуру:
id, tmplvarid, contentid, value
где
tmplvarid - id TV переменной
contentid - id документа к которому принадлежит переменная
value - значение переменной.
Т.е. для каждого документа - в таблице несколько записей с описанием отдельной TV переменной.
САМ ВОПРОС:
Вот я и туплю страшно, как бы мне составить запрос к этой таблице, что бы получить список документов (contentid), по поисковому запросу типа (Price<10) AND (Size<10) AND (Manufacture LIKE ’Epson%’), если каждый из проверяемых параметров в скобках - разные записи в таблице?
(Ну конечно, вместо Price, Size и т.д. - id соответствующих TV параметров)
Это вообще в принципе возможно за один запрос?
С уважением, Владимир