@khodos_dmitry

Можно ли подставить в IN строку sql запросе?

Выполняю такой запрос:
SELECT `rus_category` FROM `categories` WHERE `id` IN (SELECT id_categories FROM products WHERE id=1)

Получаю:
Автоматизация бизнес-процессов
Здесь products.id_categories - строка такого типа: 1,6,7,8,3 - то есть перечислены id категорий.
В общем этот запрос не срабатывает. Значение в IN обрезается до первой запятой.
Как можно сделать такой запрос? Или единственный вариант делать вторую таблицу category_product .
  • Вопрос задан
  • 75 просмотров
Решения вопроса 2
Adamos
@Adamos
Вариант нормализовать данные - не единственный.
Но, как правило, единственно верный.
Ответ написан
Комментировать
@dimoff66
Кратко о себе: Я есть
Любой поиск подстроки подойдет, например
WHERE POSITION(id IN products.id_categories) > 0
или лучше
WHERE POSITION(CONCAT(',', id, ',')  IN CONCAT(',', products.id_categories, ','))  > 0


Но не будет работать индексация, если скорость критична то лучше вторую таблицу
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
glaphire
@glaphire
PHP developer
SELECT `rus_category` FROM `categories` WHERE `id` IN (SELECT id_categories FROM products)

Mysql не может автоматически вынуть значения колонки из таблицы, нужно указывать это явно)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы