У меня есть две таблицы, одна таблица содержит циклы оплаты, а другой содержит вещи, которые должны быть оплачены в зависимости ежегодно, ежемесячно и т.д.Дело MySQL только оценивает первое условие.
Я запросов к базе данных таким образом:
SELECT
L.UserID,
U.Username,
L.CostPerCycle,
CT.CycleType,
CASE L.CycleTypeID
WHEN L.CycleTypeID = 1 THEN L.CostPerCycle * 12
WHEN L.CycleTypeID = 2 THEN L.CostPerCycle * 3
WHEN L.CycleTypeID = 3 THEN L.CostPerCycle * 2
WHEN L.CycleTypeID = 4 THEN L.CostPerCycle
WHEN L.CycleTypeID = 5 THEN L.CostPerCycle
END AS AnnualCost
FROM
Links L
LEFT JOIN Users U ON L.UserID = U.UserID
LEFT JOIN CycleTypes CT ON L.CycleTypeID = CT.CycleTypeID
WHERE
L.CycleTypeID <> 6;
Проблема в том, что MySQL возвращает значения NULL вместо результата умножения, и я не совсем уверен, почему.
Я заметил, что оценивается только первое условие, но я не уверен, что происходит с остальными.
Другими словами:
Если есть запись с CycleTypeID = 1
затем MySQL умножает CostPerCycle
раз 12. Однако если CycleTypeID отличается от первого условия, то MySQL делает что-то, и я не уверен, что он делает что в основном «игнорирует» остальные мои условия.
Надеюсь, что информации достаточно, чтобы указать мне в правильном направлении!
Спасибо!
Также нет ELSE, поэтому любое значение> 5 также приведет к значениям NULL. –
Спасибо, что голова раздувается, и для ответа Гордон. Я посмотрел на документацию MySQL, и я не понимал, что смешиваю две формы одного и того же оператора. Интересно, почему MySQL имеет два способа написать один и тот же оператор. – ILikeTacos
@AlanChavez. , , Это не MySQL, это стандарт ANSI, который имеет два. –