2014-04-28 4 views
1

Я пытаюсь создать SQL-запрос с CASE, если поле не является нулевым. Я хочу получить значение из вложенного SELECT, иначе я хочу указать выбранное поле = '-'. Если поле равно null, то оно работает, но если нет, тогда я получаю пустое значение вместо результата моего вложенного запроса.CASE MySQL - SELECT as value

Это мой код:

SELECT 
    id, 
    CASE role 
     WHEN 0 THEN \'Handlowiec\' 
     WHEN 1 THEN \'Kierownik\' 
     WHEN 2 THEN \'Administrator\' 
    END AS role, 
    name, 
    email, 
    CASE manager 
     WHEN manager IS NULL THEN \'-\' 
     ELSE (SELECT name FROM User a WHERE id = manager) 
    END AS manager 
FROM User ' . $where . ' ORDER BY name 

Я хочу, чтобы получить имя менеджера или «-», если поле «менеджер» является недействительным.

ответ

1

Это может быть сделано с объединением вместо вложенного запроса:

SELECT 
    u.id AS id 
    CASE u.role 
     WHEN 0 THEN \'Handlowiec\' 
     WHEN 1 THEN \'Kierownik\' 
     WHEN 2 THEN \'Administrator\' 
    END AS role, 
    u.name AS name, 
    u.email AS email, 
    COALESCE (m.name, '-') AS manager 
FROM User u 
LEFT OUTER JOIN User m ON u.manager = m.id ' . $where . ' ORDER BY name 
Смежные вопросы