Необходимо создать фильтр в таблице по трем столбцам: обьем, высота, диаметр. Необходимо выводить в таблице результаты максимально приближенные к значениям введенным в поля фильтра к примеру вводим в поле обьема 5 и должно вывести обьекты с максимально близкими значениями из бд. Если в бд есть обьемы 1, 2, 3, 5, 8, 10, 12 , то должно вывести обьекты с обьемом 3, 5, 8.
Нужна помощь хотя бы с чего начать и в каком направлении копать и возможно ли вообще такое, буду благодарен ссылкам.
Вот так покажет два ближайших
SELECT * FROM table_name
order by abs((heght*length*width) - volume) limit 2;
Sql не пой профиль, но может это поможет?
select top 1
a.height
from tableA as a
where
a.height < [ConcreteHeight]
order by a.height desc
union
select top 2
a.height
from tableA as a
where
a.height >= [ConcreteHeight]
order by a.height
Для поиска числа, меньшего искомого, и числа, большего искомого, выполним такой запросик:
SELECT
*
FROM
table_name
WHERE
volume = (SELECT MIN(volume) FROM table_name where volume > 45)
OR volume = (SELECT MAX(volume) FROM table_name where volume < 45)
OR volume = 45
45 - ваша цифра (введенная в поле объема)
//Тестовая колонка - запрос 45
29
30
31
45
46
47
//Выведет
31
45
46
Данный код предназначен для поиска значений объема, то есть для 3 разных колонок придется выполнить три раза - для объема, высоты, диаметра.
По мотивам https://stackoverflow.com/questions/1084390/how-to-find-the-previous-and-next-record-using-a-single-query-in-mysql (ключевые слова для поиска mysql neighbor nearest)
SELECT * FROM table_name ORDER BY ABS(height- :height)
где :height значение фильтра.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости