почему я не получаю значение в ifnull от рельсов - PullRequest
0 голосов
/ 10 августа 2011

У меня есть запрос (он довольно длинный, но вот в чем суть)

Name.find_by_sql(['SELECT IFNULL(users.last_name, "nil") FROM users
                  JOIN user_groups ON user_groups.user_id = users.id
                  JOIN groups ON groups.id = user_groups.grous_id
                  WHERE users.first_name IN (?)', ['Sam','Sally']]) AND groups.name='baseball'

Сейчас Сэм в бейсбольной группе, а Салли - нет.

Я надеюсь, что вернусь (фамилия Сэма - Хилл)

['Hill','nil']

Но я только получаю ['Хилл'].Я не уверен, почему я не вернул ноль.Я пробовал 'LEFT OUTER JOIN' для каждого из операторов соединения, так как я думал, что, возможно, именно здесь теряется 'nil', но я все еще получаю только один возвращенный элемент.

1 Ответ

2 голосов
/ 10 августа 2011

Вы не получите ответ, потому что ваш фильтр для groups.name указан в предложении WHERE. Это только вернет пользователей, которые входят в бейсбольную группу. Если вы добавите условие в JOIN, то вы вернете пользователей, которые не входят в бейсбольную группу, и у них будет ожидаемое значение NULL:

JOIN groups ON groups.id = user_groups.grous_id AND groups.name='baseball'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...