Задать вопрос
@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 .
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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 не может автоматически вынуть значения колонки из таблицы, нужно указывать это явно)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы