Какой самой простой конструкцией в одном 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?


Ответы (0 шт):