2011-01-05 1 views
0

Я пытаюсь выполнить поиск по моей базе данных для размеров. Некоторые из них для предметов одежды в следующих форматах:Поиск размеров в DB, ​​половину и в полном размере

Маленького - Черный Малого - Красного

или

Малого Среднего Большого XL

Часть моего запрос, который ищет размер LIKE '".$size."%' $ размер маленький, средний, большой или XL. Все это хорошо работает. Однако мне также нужно искать по размеру обуви. Проблема в том, что если я ищу размер 10, он вернет результаты размера 10 и 10.5.

Я думал, что могу сделать оператор if перед запросом, чтобы узнать, является ли $ size числом, а затем имеет другой запрос для строк и чисел, но я искал более чистый способ сделать это. Какие-либо предложения? Благодаря!

+5

Размер обуви, вероятно, должен быть полем 'DECIMAL', поэтому вы также можете делать запросы типа' size> 8 AND size <10' –

+0

В этом же столбце хранятся как числовые размеры (10, 10.5 и т. Д.), Так и Размер строки (малый, средний, большой, XL и т. Д.)? – Nishant

+0

Я не могу придумать конструктивный комментарий, который не начинается с «ха-ха» и заканчивается чем-то о бит-ведро, поэтому я вместо этого проголосую Пекку! – Ronnis

ответ

0

заменить колонку с enum

размеры определены (S, M, L, XL, XXL, XXXL, 5,5.5,6,6.5,7 ....), безусловно, вписывается в 65535 элементов

0

По внешнему виду вы можете просто использовать «=», а не как? Если вы потом, вы получите свои XL, Medium или «10» назад, не так ли? Почему бы не использовать ='".$size."'

1

Попробуйте следующую команду, где пункт

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

Я думаю, что ответы здесь все сложить на одну вещь: у вас есть поле полный случайных данных.

Настоящий ответ заключается в том, чтобы придумать способ формализации ввода данных, чтобы у вас была однородность. Существует много способов сделать это, но вы можете захотеть указать поле, указанное как ajreal для размеров стиля «простого языка» (и записи данных CONSTRAIN в этот список), и поля для числовых размеров и, возможно, поля управления чтобы указать, какой из них должен использоваться для записи. Этот пример может быть даже не очень хорошим, но вам нужно получить данные единообразно, чтобы поисковые запросы работали эффективно.

Ярлык может быть для уменьшения размера, произнеся «как« foo »или« 10 .5 », который вернет подмножество записей, а затем повторит и удалит специальные предметы на дисплее. Это плохая идея взлома.

Смежные вопросы