2013-07-21 2 views
0

мне нужна помощь о выбрать с условием, прямо сейчас я делаю это:Выберите с условием

   GROUP_CONCAT(
        CASE WHEN glpi_tickets.users_id_lastupdater = glpi_users.id THEN 
         CONCAT(glpi_users.firstname, ' ', glpi_users.realname) 
        END SEPARATOR '<br>') AS last_updater 

Я выбираю Firstname и RealName при users_id_lastupdater = идентификатор

Я предполагаю, что есть лучший способ сделать это?

+1

Какая у вас проблема? – user2480596

+1

(= последующие действия http://stackoverflow.com/questions/17756439/need-help-again-about-joining-tables) – GolezTrol

+0

Проблема в моем запросе, она будет отображать только одно имя и одно реальное имя, m not sure group_concat - лучший способ сделать это – Mokkun

ответ

1

group_concat похоже overkill для этого. Вы можете просто использовать max():

max(CASE WHEN glpi_tickets.users_id_lastupdater = glpi_users.id 
     THEN CONCAT(glpi_users.firstname, ' ', glpi_users.realname) 
    END) AS last_updater 

Сепаратор не требуется, поскольку он не используется только один элемент.

РЕДАКТИРОВАТЬ:

max() функция принимает максимум значения аргумента. В этом случае это обусловлено из-за case. Когда условие не выполняется, значения равны NULL (не оговорка else). Таким образом, он извлекает значение при выполнении условия. Если несколько строк соответствуют условию, оно получает наибольшее значение.

+0

Спасибо большое, это прекрасно! Итак, какова максимальная функция? он выбирает с условием? – Mokkun

Смежные вопросы