REST API не поддерживает группировку SQL. Есть ли способ преодолеть это?

0

Образец моей базы данных. Я не могу контролировать, как база данных сохраняет данные.

http://sqlfiddle.com/#!9/155e3c/19

Проблема связана с двумя факторами:

  1. API REST (vTiger open source CRM) не поддерживает группировку.

  2. Для полей, которые хранят несколько опций выбора, база данных хранит их в 1 поле, разделенном | ## |.

Я хочу: я хочу, чтобы иметь возможность получать запросы, основанные также на наличии значений в поле multipicklist, но из-за отсутствия поддержки группировки я не могу это сделать, не затрагивая остальную часть моего запроса.

Поэтому в основном я ищу способ преодолеть эту негрупповую ситуацию и создать запрос, который будет эквивалентен:

SELECT * FROM Контакты WHERE car IN ("Тойота", "Феррари") И (страна, КАК "% Канада%" ИЛИ страна, КАК "% Бразилия%");

Есть ли способ сделать это?

Дополнение: если я просто хотел получить все параметры, заданные пользователем при поиске в поле multipicklist, это было бы нормально, потому что я просто использовал бы оператор AND. но если я хочу только один из вариантов, негруппированный оператор OR разрушает мой запрос.

Теги:
vtiger

1 ответ

0

У меня была аналогичная проблема, когда мне нужно было получить данные, которые не могли быть получены с помощью поддержки запросов API. Я закончил создание собственных веб-сервисов. Вам нужно будет создать модуль, который вы можете развить локально, а затем развернуть его в экземпляр экземпляра vtiger. Для установки модуля вам понадобится пользователь vtiger с правами администратора на экземпляре производства (вам не нужен прямой доступ к базе данных или файлам).

Таким образом, вы можете создавать свои собственные запросы в mysql и обертывать их функциями, такими как getContactsByCar (car_array).

  • 0
    Ого, это звучит круто, но я нахожусь в процессе решения этого по-другому. Таким образом, мое решение (не элегантное, но, тем не менее, креативное) состоит в том, чтобы на самом деле запустить инвертор для опций множественного выбора, в противном случае оператор OR был бы. допустим автомобили: тойота, ауди, феррари, фиат. Моему пользователю нужны любые клиенты, которые интересовались audi или ferrari. вместо запуска ГДЕ автомобиль = 'audi' ИЛИ автомобиль = 'ferrari'. Я переворачиваю форму списка мультикликов перед отправкой и сбрасываю после отправки. тогда ручка: ГДЕ НЕ автомобиль = "Тойота" И НЕ автомобиль = "Fiat".
  • 0
    Хорошо, я думаю, что веб-сервис может не поддерживать НЕ операторов. дерьмо.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню