如何在MySQL/PHP中存储和搜索数字间隔?

如何在MySQL/PHP中存储和搜索数字间隔?,php,mysql,database,search,intervals,Php,Mysql,Database,Search,Intervals,我有以下情况: 用户将为每个产品输入间隔和/或单个逗号分隔的数字代码 部分表格示例: name | codes ----------------------------------- Product 1 | 239,300-350 Product 2 | 430-450,500,29 Product 3 | 780,2 例如,当用户搜索代码321时,它应该返回Product 1的行 有没有一种方法可以通过一个查询进行搜索?我建议用两个表进行搜索: products

我有以下情况:

用户将为每个产品输入间隔和/或单个逗号分隔的数字代码

部分表格示例:

name        | codes
-----------------------------------
Product 1   | 239,300-350

Product 2   | 430-450,500,29

Product 3   | 780,2
例如,当用户搜索代码321时,它应该返回Product 1的行


有没有一种方法可以通过一个查询进行搜索?

我建议用两个表进行搜索:

products:
 - name
 - id

code_ranges:
 - product_id
 - range_start
 - range_end
然后,您可以通过使用连接获得所需(对于某些
$input\u id
):

SELECT product.id, product.name
FROM products 
JOIN code_ranges ON products.id = code_ranges.product_id
WHERE code_ranges.range_start <= $input_id
    AND code_ranges.range_end >= $input_id
选择product.id、product.name
来自产品
在products.id=code\u ranges.product\u id上加入代码\u范围
其中code\u ranges.range\u start=$input\u id
每个产品的
code\u范围
表中可以有多行,以表示多个不同的范围(例如
2-4,7-10
将有两行,一行的
range\u start=2
range\u end=4
,另一行的范围为7-10)


不属于范围的产品代码将被简单地视为起点和终点相同的范围(例如,
7
将是
range\u start=7
range\u end=7
)。

我建议用两个表来代替:

products:
 - name
 - id

code_ranges:
 - product_id
 - range_start
 - range_end
然后,您可以通过使用连接获得所需(对于某些
$input\u id
):

SELECT product.id, product.name
FROM products 
JOIN code_ranges ON products.id = code_ranges.product_id
WHERE code_ranges.range_start <= $input_id
    AND code_ranges.range_end >= $input_id
选择product.id、product.name
来自产品
在products.id=code\u ranges.product\u id上加入代码\u范围
其中code\u ranges.range\u start=$input\u id
每个产品的
code\u范围
表中可以有多行,以表示多个不同的范围(例如
2-4,7-10
将有两行,一行的
range\u start=2
range\u end=4
,另一行的范围为7-10)


不属于范围的产品代码将被视为起点和终点相同的范围(例如
7
将是
range\u start=7
range\u end=7
).

我有同样的问题,但第一个答案没有帮助。因为当你寻找商品代码范围=239时,你无法定义该商品也包含300-350

我有同样的问题,但第一个答案没有帮助。因为当你寻找商品代码范围=239时,你无法定义该商品也包含300-350,是什么导致了这一设计决策?用户用一个唯一的条形码编号标记每个项目,无论同一产品是否有10个不同的条形码,他都会在。。。excel文件。是的,听起来很疯狂,无法说服他重新标记(已经有很多物品了)。哦,天哪,是什么导致了这个设计决策?用户用一个唯一的条形码编号标记了每个物品,不管同一产品是否有10个不同的条形码,他都会在。。。excel文件。是的,听起来很疯狂,而且无法说服他重新标记(已经有很多物品了)。