Какой самой простой конструкцией в одном SQL-запросе извлечь несколько значений из одной колонки, каждое по своему условию?
Вопрос возник в контексте следующей задачи:
Есть вспомогательная таблица признаков prop, содержащая среди прочего для каждого признака его уникальные название prop.name(CHAR[32]) и идентификатор prop.id(INT).
Есть основная таблица неких сущностей entity, содержащая среди прочего для каждой сущности по 3 признака: entity.prop1(INT), entity.prop2(INT) и entity.prop3(INT).
Необходимо в таблицу entity добавить новую сущность при помощи конструкции:
INSERT INTO entity(prop1,prop2,prop3) SELECT...
передав в качестве входных параметров не идентификаторы 3 признаков, а их названия, чтобы запрос сам вместо названий подставил соответствующие идентификаторы из вспомогательной таблицы.
При установке только 1 признака, например, первого, можно использовать такой запрос:
INSERT INTO entity(prop1,prop2,prop3) SELECT id,0,0 FROM prop WHERE name='Имя 1 признака'
Какой сформировать SQL-запрос, если надо установить сразу несколько признаков, например все 3?