Реализация условия «ИЛИ» в SphinxQL

в 6:07, , рубрики: sphinx, sql, метки: ,

SQL-подобный язык SphinxQL пока не поддерживает условие «OR» в выражении «WHERE». То есть при запросе к поисковому индексу нельзя написать нечто вроде

SELECT * FROM `goods_index` WHERE `price` > 100 OR `price` = 0;

выбрать из индекса все товары, с ценой большее 100 тугриков или если цена не указана

Но выходы, конечно, есть: использовать вычисления. Перепишем запрос для придуманного мною примера в таком виде:

SELECT *, IF(`price` > 100, 1, 0) + IF(`price` = 0, 1, 0) AS `pricematch` FROM `goods_index` WHERE `pricematch` = 1;

Фокус в том, что pricematch всегда будет равен единице, если цена выше 100 или равна нулю и для проверки соответствия записи достаточно проверить равенство pricematch единице.

Используя такие вычисления в запросах SphinxQL и традиционного SQL, можно выйти из положения в других ситуациях, когда в запросе необходимо условие «или».

Автор: ChemAli

Источник

Поделиться

* - обязательные к заполнению поля