У меня есть запрос, который проверяет значение некоторого случая из БД и находит ранг в том, что значение находится в таблице BOD
:
SELECT DISTINCT bod_bod, (SELECT REPLACE(predf_VPS,'.','') as vps FROM PREDMETIFView WHERE
predf_nas_br=?) as vps_baza FROM BOD WHERE (SELECT REPLACE(predf_VPS,'.','') as vps
FROM PREDMETIFView WHERE predf_nas_br=?) BETWEEN bod_od AND bod_do ORDER BY bod_bod ASC
LIMIT 1
Таблица BOD:
| bod_id | bod_od | bod_do | bod_bod | bod_dodan |
| ------ | --------- | --------- | ------- | ------------------- |
| 0 | 0.00 | 2500.00 | 25 | 0000-00-00 00:00:00 |
| 1 | 2500.01 | 5000.00 | 50 | 0000-00-00 00:00:00 |
| 2 | 5000.01 | 10000.00 | 75 | 0000-00-00 00:00:00 |
| 3 | 10000.01 | 100000.00 | 100 | 2020-04-10 13:06:53 |
| 4 | 100000.01 | 250000.00 | 250 | 0000-00-00 00:00:00 |
| 5 | 250000.01 | 500000.00 | 500 | 2020-04-08 23:04:30 |
Текущее SQL для значения подзапроса 11899
из PREDMETIFView
выбор таблицы дает мне результат:
bod_bod vps_baza
100 11899
, потому что число 11899
находится между 10000.01
и 100000.00
.
Позже я сделаю некоторые вычисления с этим числом в PHP.
Но вот проблема: Когда число больше 500000.00, результат запроса будет 0 строк (потому что нет соответствующего ранга). Но мне все еще нужен этот номер vps_baza
для вычислений в PHP.
Итак, есть ли способ сказать, что если нет ранжированных совпадений, он по-прежнему производит одну строку результата (без изменения таблицы BOD) например, для vps_baza 511899
значение:
bod_bod vps_baza
null 511899
MySQL версия - 5.6
Я создал DBfiddle:
Если вы измените значение в строке 98
от 511899
до, например, 899
, я получаю строку, но большие значения, чем 500000
, это не удается.