2011-01-05 3 views
0

私のデータベースからサイズを検索しようとしています。 - ブラック 小 -DB、半分、フルサイズのサイズを検索する

または

小 ミディアムレッド 大 XL

サイズを検索する私のクエリの一部

小:いくつかは、次の形式での衣料品のためのものですLIKE '".$size."%' $サイズは小、中、大、またはXLです。これはすべてうまくいく。しかし、私はまた、靴のサイズで検索する必要があります。問題は、サイズ10を検索すると、サイズ10とサイズ10.5の結果が返されます。

$ sizeが数字であるかどうかを調べるためにクエリの前にifステートメントを実行してから、文字列と数値を別々に照会することができますが、これを行うためのよりクリーンな方法を探していました。助言がありますか?ありがとう!

+5

靴のサイズは、おそらく 'size> 8 AND size <10'のようなクエリを実行できるように' DECIMAL'フィールドでなければなりません。 –

+0

同じカラムに数値サイズ(10,10.5など)文字列サイズ(小、中、大、XLなど)? – Nishant

+0

"ハハ"で始まらず、ビットバケットについて終わる建設的なコメントは考えられないので、代わりにPekkaに投票します! – Ronnis

答えて

0

(.... 5,5.5,6,6.5,7、S、M、L、XL、XXL、XXXL)enum

サイズが定義されると列を交換は間違い65,535要素に適合されています

0

見た目では、「=」の代わりに「=」を使用できますか?あなたがそうなら、XL、Medium、または'10 'のヒットを返すでしょうか?なぜ句

size LIKE '".$size."%' AND size NOT LIKE '".$size.".5%' 
1

を使用しないで一つのことにまで追加:あなたは、ランダムなデータの完全なフィールドを持っています。

本当の答えは、データエントリを正式化して一貫性を持たせる方法を考え出すことです。これを行うには多くの方法がありますが、「平易な言語」のスタイル・サイズ(このリストへのCONSTRAINデータ・エントリー)、数値サイズ用のフィールド、場合によってはコントロール・フィールド用のajrealで列挙されたフィールドを列挙したい場合がありますどのレコードがレコードに使用されるかを示します。この例は良い方法ではないかもしれませんが、検索を効率的に行うためにデータを統一する必要があります。

ショートカットは、 "like 'foo'や'10 .5 ''と言ってサイズを小さくすることができます。これは、レコードのサブセットを返し、表示時に特殊なケース項目を反復して削除します。これは悪いアイデアのハックです。

0

私はここの回答すべてを考えるところ以下のことを試してみてください='".$size."'

関連する問題