Отображение значений классов для разных типов классов в одной строке - PullRequest
1 голос
/ 30 октября 2011

Я не знаю, как написать запрос в sqlite, который будет из этой таблицы:

image_id | feature_id | feature_val
_________|____________|____________
  12     |    1       |     41
  12     |    2       |     82
  12     |    3       |     75

  74     |    1       |     23
  74     |    2       |     35
  74     |    3       |     72

Возвращена таблица результатов:

image_id |  feature_1_val  | feature_2_val | feautre_3_val
_________|_________________|_______________|_______________
  12     |       41        |      82       |       75
  74     |       23        |      35       |       72      

Можно предположить, что количество объектов изображения постоянно и равно 3. Буду очень благодарен за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 31 октября 2011

Принимая во внимание ограничения, изложенные в вопросе, вы можете создать не элегантный, но работоспособный подход, используя подзапросы:

SELECT it.image_id,
       (SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 1) AS feature_1_val,
       (SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 2) AS feature_2_val,
       (SELECT feature_val FROM ImageTable WHERE ImageTable.image_id = it.image_id AND ImageTable.feature_id = 3) AS feature_3_val 
  FROM ImageTable AS it
  GROUP BY it.image_id
0 голосов
/ 30 октября 2011

Процесс превращения строк в столбцы называется pivoting. Лучше всего это сделать на стороне клиента. Например, Microsoft Excel имеет обширную поддержку через сводные таблицы.

Но это не невозможно в SQL. Вот один пример использования трюка max(case(:

select  image_id
,       max(case when feature_id = 1 then feature_val end) as feature_1_val
,       max(case when feature_id = 2 then feature_val end) as feature_2_val
from    YourTable
group by
        image_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...