CSV поле соответствия в где

0

я имею в поле категории, которое имеет csv, например, 1,3,5, и я хочу сопоставлять другие категории в таблице, скажем, (1,2,3,4), на данный момент он использует claase, но это не работает когда есть несколько категорий.

Job.jobcategory_alias in (SELECT p_alias FROM job_categories WHERE p_id = 10225 or p_parent_id = 10225 or p_id = 10237 or p_parent_id = 10237)

он будет работать, если jobcategory_alias имеет только одно значение, подобное 1, но терпит неудачу, если оно имеет два значения, например, 1,2 разделенные запятой.

Я не могу изменить структуру базы данных.

Как я могу написать запрос для соответствия нескольким категориям?

Теги:

1 ответ

0

Используйте find_in_set():

find_in_set(Job.jobcategory_alias,
            (SELECT p_alias
             FROM job_categories
             WHERE p_id IN (10225, 10237) OR p_parent_id IN (10225, 10237)
            )
           ) > 0

Это предполагает, что подзапрос возвращает не более одной строки.

  • 0
    В моем случае подзапрос возвращает несколько строк
  • 0
    Я использовал GROUP_CONCAT, чтобы попасть в один ряд. Работает ли find_in_set с несколькими значениями для первого параметра ?, я видел только примеры для одного значения
Показать ещё 4 комментария

Ещё вопросы

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