Образец моей базы данных. Я не могу контролировать, как база данных сохраняет данные.
http://sqlfiddle.com/#!9/155e3c/19
Проблема связана с двумя факторами:
API REST (vTiger open source CRM) не поддерживает группировку.
Для полей, которые хранят несколько опций выбора, база данных хранит их в 1 поле, разделенном | ## |.
Я хочу: я хочу, чтобы иметь возможность получать запросы, основанные также на наличии значений в поле multipicklist, но из-за отсутствия поддержки группировки я не могу это сделать, не затрагивая остальную часть моего запроса.
Поэтому в основном я ищу способ преодолеть эту негрупповую ситуацию и создать запрос, который будет эквивалентен:
SELECT * FROM Контакты WHERE car IN ("Тойота", "Феррари") И (страна, КАК "% Канада%" ИЛИ страна, КАК "% Бразилия%");
Есть ли способ сделать это?
Дополнение: если я просто хотел получить все параметры, заданные пользователем при поиске в поле multipicklist, это было бы нормально, потому что я просто использовал бы оператор AND. но если я хочу только один из вариантов, негруппированный оператор OR разрушает мой запрос.
У меня была аналогичная проблема, когда мне нужно было получить данные, которые не могли быть получены с помощью поддержки запросов API. Я закончил создание собственных веб-сервисов. Вам нужно будет создать модуль, который вы можете развить локально, а затем развернуть его в экземпляр экземпляра vtiger. Для установки модуля вам понадобится пользователь vtiger с правами администратора на экземпляре производства (вам не нужен прямой доступ к базе данных или файлам).
Таким образом, вы можете создавать свои собственные запросы в mysql и обертывать их функциями, такими как getContactsByCar (car_array).