Как заменить вывод SELECT statemnt в Mysql? - PullRequest
3 голосов
/ 29 ноября 2011

У меня есть запрос

SELECT id, descr Category, parent_id `Department`, updated `Updated`
     , updatedby `By`
FROM category

, который возвращает числа в столбце parent_id.Он может вернуть только одно из трех чисел (167, 154, 164) в столбце parent_id.Я хочу заменить эти цифры на:

164 - Advertisemnt
167 - Modeling
154 - Finance 

Как этого достичь?Итак, таблица должна выглядеть так:

id category Department Updated By

1  Network  Modeling   now()   Me

Ответы [ 4 ]

7 голосов
/ 29 ноября 2011

Использовать как оператор CASE следующим образом:

SELECT id
      ,descr AS `Category`
      ,CASE parent_id 
         WHEN 164 THEN 'Advertisemnt'
         WHEN 167 THEN 'Modeling'
         WHEN 154 THEN 'Finance'
         ELSE          'Unknown partent_id'
       END AS `Department`
     ,updated AS `Updated`
     ,updatedby AS `By`
FROM  category
1 голос
/ 29 ноября 2011

Вы уверены, что названия отделов отсутствуют в таблице?

Если вы хотите жестко закодировать названия отделов, вы можете сделать это следующим образом:

SELECT id, descr Category, 
       case parent_id when 154 then 'Finance' 
                      when 164 then 'Advertisement'
                      when 167 then 'Modeling' 
       end case "Department", 
       updated "Updated", updatedby "By" 
  FROM category
0 голосов
/ 29 ноября 2011

Я думаю, что оператор CASE, такой как здесь , должен справиться с задачей.

Обновление: если у вас есть гибкий список элементов, может быть полезно поместить их в отдельную таблицу иотсылать их с помощью внешних ключей.

0 голосов
/ 29 ноября 2011

Обновление : Я забыл о CASE, думаю, он лучше подходит, см. Другие ответы.

Используйте IF

SELECT id, descr as Category, 
if(parent_id='164', 'Advertisemnt', 
    if(parent_id='167','Modeling',
        if(parent_id='154, 'Finance', '')
    )
 ) as Department, updated as Updated, updatedby as By FROM category;

Тестроки не могут быть прочитаны из другой таблицы?Чё жестко закодированы в скриптах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...