2013-06-19 4 views
0

Я пытаюсь получить правильное изображение команды из таблицы изображений. Должно быть только одно удостоверение команды. В заявлении ниже случай прекрасно работает, когда первое изображение, полученное также подтверждено, но если первое изображение становится недействительным, а второй получил это подтверждено ... Я получаю строку NULLОшибка в MySQL CASE Statement

CASE 
    WHEN taskcode = 0 AND validated = 1 
    THEN imgRenamed 
    ELSE NULL 
    END AS teamImg 

резюмировать по-другому.

  1. одна команда изображение получено и подтверждено (выше работает отлично)
  2. одна команда изображение, полученное, признан недействительным (выше работает отлично)
  3. же, как # 2, но второе изображение получено и подтверждено (выше возвращает NULL)

Я также должен отметить, что оба изображения, о которых идет речь, будут иметь код задачи 0, это только то, что один будет помечен как недопустимый, а второй помечен как действительный.

Достаточно ли информации для кого-то, чтобы помочь мне понять, что пошло не так в случае № 3?

благодарит

+0

Оператор 'CASE' не используется для выбора того, какие строки возвращаются, что сделано в предложении' WHERE'. – Barmar

+0

Просьба показать структуру таблицы и полный запрос SELECT. Тогда вам будет легче помочь. – Ruben

ответ

1

Вы должны включить это в совокупности, что-то вроде:

select max(CASE WHEN taskcode = 0 AND validated = 1 
       THEN imgRenamed 
       ELSE NULL 
      END) AS teamImg 
from . . . 
group by teamId 

Без агрегации, MySQL выбирает произвольные значения, как правило, из одной строки для условий. Другими словами, условия не применяются ко всем строкам, только к одному из них.

+0

Спасибо, Гордон! Кажется, он отлично поработал! –