Как вернуть значение, если строки нет?
Я читаю данные из таблицы через Qml + JS и мне нужно 100 возвращаемых данных, если запрос не нашел данных:
SELECT (CASE
WHEN pourcenthour < pourcentcycle AND pourcenthour < pourcentmonth THEN pourcenthour
WHEN pourcentcycle < pourcenthour AND pourcentcycle < pourcentmonth THEN pourcentcycle
WHEN pourcentmonth < pourcenthour AND pourcentmonth < pourcentcycle THEN pourcentmonth
ELSE 100
END) AS pourcent,
ata,
immatriculation
FROM part_log
WHERE removed = "false" AND immatriculation =? AND ata=?
ORDER BY pourcent DESC LIMIT 1
Я пытаюсь это:
SELECT IFNULL((CASE WHEN ... ELSE 100 END),100) AS pourcent, ...
Я получил ошибку:
Не удается прочитать свойство 'pourcent' из неопределенного
Я пытаюсь это:
SELECT IFNULL(SELECT (CASE WHEN ... ELSE 100 END) ,100) AS pourcent
Я получил эту ошибку:
Ошибка: рядом с "ВЫБОР": синтаксическая ошибка Невозможно выполнить инструкцию
1 ответ
Решение
То, что вы пишете в предложении SELECT, оценивается один раз для каждой строки. Это означает, что если нет строки, ничто в предложении SELECT не может вам помочь.
Вы можете использовать составной запрос, чтобы добавить еще одну строку. Окончательный предел гарантирует, что только part_log
строка, если таковая была найдена, возвращается:
SELECT *
FROM (SELECT CASE ... END AS pourcent, ata, immatriculation
FROM part_log
WHERE removed = "false" AND immatriculation =? AND ata=?
ORDER BY pourcent DESC LIMIT 1)
UNION ALL
SELECT 100, NULL, NULL
LIMIT 1;