我有以下場景:如何在MySQL/PHP中存儲和搜索數字間隔?
用戶將輸入每個產品的間隔和/或單個逗號分隔的數字代碼。
部分表例如:
name | codes
-----------------------------------
Product 1 | 239,300-350
Product 2 | 430-450,500,29
Product 3 | 780,2
例如,當代碼321的用戶搜索,它應該返回產品1
的行是否有這樣做的是搜索與單一的方式查詢?
我有以下場景:如何在MySQL/PHP中存儲和搜索數字間隔?
用戶將輸入每個產品的間隔和/或單個逗號分隔的數字代碼。
部分表例如:
name | codes
-----------------------------------
Product 1 | 239,300-350
Product 2 | 430-450,500,29
Product 3 | 780,2
例如,當代碼321的用戶搜索,它應該返回產品1
的行是否有這樣做的是搜索與單一的方式查詢?
我建議有兩個表,而不是這樣做:
products:
- name
- id
code_ranges:
- product_id
- range_start
- range_end
然後你就可以通過使用得到你想要的(對於某些$input_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
你可以有多個每個產品的code_ranges
表中的行代表多個不同的範圍(例如,2-4,7-10
將具有兩行,一個具有range_start=2
和range_end=4
,另一個具有7-10範圍)。
不是範圍的產品代碼將被簡單地視爲開始和結束相同的範圍(例如7
將是range_start=7
和range_end=7
)。
從來沒有想過這種方法。非常感謝! – 2012-03-14 03:56:49
我有同樣的問題,但是當你在尋找項目的代碼範圍的第一個答案是不是helpful.Because = 239,那麼你不能difine該項目還包含300-350
哦JEES,是什麼導致了這種設計決定? – DanRedux 2012-03-14 03:06:17
用戶使用唯一的條形碼編號標記每個項目,無論是否有同一產品的10個不同的條形碼,並且他正在追蹤它在... excel文件中。 是啊,聽起來真的很瘋狂,並不能說服他重新(已經有很多物品)。 – 2012-03-14 03:56:28