Условие на основе столбца в данных - PullRequest
2 голосов
/ 19 июля 2011

Существует две таблицы: первая содержит данные, а вторая метаданные для первой на основе категории.

table1 
id, category1, category2, custom1, custom2, custom3...

table2 
category1, category2, denom, field

Пример:

table1
AAAAA, Car, Compact, Red, Automatic, 150bhp

table2
Car, Compact, Color, custom1

Столбец 'field' в table2 указывает, для какого поля в table1 у нас есть метаданные.

Теперь я хочу как-то использовать значение столбца 'field' в sql в качестве столбца.

select * from table1
where table1.category1 = 'Car'
  and table1.category2 = 'Compact'
  and table1.category1 = table2.category1
  and table1.category2 = table2.category2
  and table2.denom = 'Color'
  and table1.(value of table2.field) = 'Red'

Возможно ли это сделать в одном SQL-выражении?

1 Ответ

2 голосов
/ 19 июля 2011

Возможно, если вы заранее знаете количество «пользовательских» столбцов.

вы можете заменить

and table1.(value of table2.field) = 'Red'

с

and    case table2.field
         when 'custom1' then table1.custom1
         when 'custom2' then table1.custom2
         when 'custom3' then table1.custom2
         ...
         else NULL
       end
       = 'Red'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...