我想制作一个订单表格,用户可以选择服装尺码。我将所有可用尺寸存储在数据库中,如code
,size
和category
。
size
的格式类似于66/68/76
(腰围/臀围/腿长)。用户可以输入这三个值。如果用户的尺寸可用 - 没有问题。但如果不是我希望网站提供或将其更改为最接近的可用尺寸。例如,如果用户输入65/66/74并且确切值不存在(或现在不可用),则将更改为66/65/74。
答案 0 :(得分:1)
您需要定义“最近”的含义。在此过程中,您还应将三个值存储在三个不同的列中。在单个列中存储多个值是个坏主意。
有时,由于其他人的设计决策不佳,人们会陷入特定的数据格式。
一个可能合理的衡量标准是欧几里德距离 - 每个组成部分的平方和。您可以在MySQL中计算:
select t.*
from (select t.*,
substring_index(size, '/', 1) as waist,
substring_index(substring_index(size, '/', 2), '/', -1) as hips,
substring_index(size, '/', -1) as legs
from t
) t
order by pow(waist - $waist, 2) + pow(hips - $hips, 2) + pow(legs - $legs, 2)
limit 1;
答案 1 :(得分:0)
将3个值存储为整数666876(66/68/76)的一种方法。
然后,您可以查询productSize - userSize
的减法的最小值,大于0。
这种方法总是使服装尺寸更大。