Необходима помощь в sql запросе?
Вам нужно отсортировать товары по наименьшей разнице между значением в таблице и введёнными даннымиORDER BY (ABS(volume - %введёный объём%)) ASC
ABS используется для получения абсолютного значения иначе могут быть не корректные результаты, для нескольких условий вам понадобится сложить все разницыORDER BY (ABS(volume - %введёный объём%) + ABS(height - %введёная высота%)) ASC`
и отсечь нужное количество используя LIMIT напримерLIMIT 3
в итоге у вас должно получиться что-то подобноеSELECT * FROM articles ORDER BY (ABS(volume - 5)) ASC LIMIT 3
или (для нескольких параметров)SELECT * FROM articles ORDER BY (ABS(volume - 5) + ABS(height - 8)) ASC LIMIT 3
По одному столбцу фильтруется без проблем:SELECT *
  FROM `table`
  WHERE `field` = :value
UNION (
  SELECT *
    FROM `table`
    WHERE `field` > :value
    ORDER BY `field` DESC
    LIMIT 1)
UNION (
  SELECT *
    FROM `table`
    WHERE `field` < :value
    ORDER BY `field`
    LIMIT 1)
По нескольким столбцам такая фильтрация, в общем случае, не получится.