2012-03-14 16 views
0

私は次のシナリオを持っています:MySQL/PHPでの番号の間隔の保存および検索方法を教えてください。

ユーザーは、各製品ごとに間隔および/または単一のコンマ区切りのコードを入力します。

部分テーブル例:コード321のためのユーザーの検索は、それが製品1

の行を返す必要があります

例えば
name  | codes 
----------------------------------- 
Product 1 | 239,300-350 

Product 2 | 430-450,500,29 

Product 3 | 780,2 

は、単一でその検索を行うための方法はありますクエリ?

+0

ああjeesを含み、決定? – DanRedux

+0

ユーザーは同じ商品の10種類のバーコードがある場合でも、各商品に固有のバーコード番号を付けてタグ付けしています。 ええ、本当に狂ったように聞こえて、彼が再タグ付けすることを納得させることはできません。 –

答えて

4

私の代わりに2つのテーブルがこれをやってお勧めしたい:

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 

を使用すると、複数持つことができます(2-4,7-10range_start=2range_end=4の2つの行を持ち、7-10の範囲はもう1つの行を持つように)各製品のcode_rangesの表の行を参照してください。

範囲外の商品コードは、開始と終了が同じ範囲(たとえば、7range_start=7となり、range_end=7となります)として扱われます。

+0

そのアプローチは考えていません。どうもありがとう! –

0

私は同じ問題を抱えているが、その最初の答えはあなたが= 239アイテムコードの範囲を探しているとき、あなたはその項目をdifineすることはできませんhelpful.Becauseではありませんがまた、この設計につながったものを300-350

関連する問題