voituk
прозревший
Использование значения поля в SQL-операторе IN (...)
Есть таблица товаров и есть таблица наборов
В таблице наборов есть поле goods где через запятую записаны идентификаторы товаров.
Например "193,176,18"
Стоит задача выбрать все записи из таблицы товаров что относятся к конкретному набору.
Например при goods="193,176,18" получить записи из таблицы товаров для товаров 193,176 и 18
Сразу напрашивается что-то типа:
[sql]
SELECT good.* FROM good, sets
WHERE sets.id='2' AND good.id IN (sets.goods);
[/sql]
Но проблема возникает в том, что sets.goods это строковой литерал, а не последовательность чисел.
Потому IN ведет себя на нем очень неоднозначно.
Можно ли как-то преобразовать значение строкового поля, в список, для использования в операторе IN()
Есть таблица товаров и есть таблица наборов
В таблице наборов есть поле goods где через запятую записаны идентификаторы товаров.
Например "193,176,18"
Стоит задача выбрать все записи из таблицы товаров что относятся к конкретному набору.
Например при goods="193,176,18" получить записи из таблицы товаров для товаров 193,176 и 18
Сразу напрашивается что-то типа:
[sql]
SELECT good.* FROM good, sets
WHERE sets.id='2' AND good.id IN (sets.goods);
[/sql]
Но проблема возникает в том, что sets.goods это строковой литерал, а не последовательность чисел.
Потому IN ведет себя на нем очень неоднозначно.
Можно ли как-то преобразовать значение строкового поля, в список, для использования в операторе IN()