2010-08-17 2 views
1

У меня есть простая таблица, которая регистрирует простые события, которые делает администратор. Ничего сложного.MySql Если операторы

Одна из колонн userid, так что я могу ссылаться на имя пользователя из таблицы пользователей:

SELECT u.username FROM `users` u, `history` h WHERE u.userid = h.userid 

Моя проблема заключается в том, что внутренняя система также регистрирует события (так же, как пользователь), но есть нет идентификатора пользователя, связанного с внутренней системой. Он записывается как ноль в записи.

Есть ли способ изменить запрос, чтобы отразить это? Я пробовал LEFT JOIN, но это не позволяет мне указать «system» как имя пользователя. Другая вещь, которую я могу сделать, - ввести нового пользователя в таблицу пользователя и назвать его «Внутренняя система». Но я действительно не хочу этого делать.

Возможно ли это сделать на уровне запросов?

ответ

1

Использование:

SELECT COALESCE(u.username, 'SYSTEM') AS username, 
    FROM HISTORY h 
LEFT JOIN USERS u ON u.userid = h.userid 

COALESCE возвратит первое ненулевое значение, так что если вы LEFT JOIN на ПОЛЬЗОВАТЕЛЬ и username является NULL - тогда «система», или что вы предпочитаете будет появляться.

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