Задавайте вопросы, мы ответим
Вы не зашли.
Сабж, мин. макс. значения могут быть разные, например, мин.=3, макс.=1500589365
Выбираю позиции по 2003-2007:
SELECT *
FROM `table_product`
WHERE `fields`
REGEXP '^Год выпуска+(.*)?200[3-7]+(.*)?$'
Пожалуйста, дайте совет по выбору данных из произвольного диапазона цифр.
Неактивен
Приведите пример данных в fields (несколько штук) и пример результата, который Вы хотите получить.
Неактивен
deadka написал:
Приведите пример данных в fields (несколько штук) и пример результата, который Вы хотите получить.
-------------------
Год выпуска|2007
Марка|Renault
Пробег|23000
------------------
Год выпуска|2003
Марка|Iveco
------------------
Год выпуска|1985
------------------
Кредит|Да
Состояние|Отличное
-----------------
Получить позиции, которые укладываются в диапазон произвольных минимальных и максимальных значений по выбранной строке в поле fields.
Отредактированно mmx (23.05.2013 13:49:48)
Неактивен
Вообще в Вашей ситуации я бы разнес это поле fields на 2 , и было бы куда проще.
Но если нельзя - используйте
http://dev.mysql.com/doc/refman/5.0/en/ … n_position
чтобы найти символ |
Далее
http://dev.mysql.com/doc/refman/5.0/en/ … _substring
чтобы откусить цифровую часть строки.
Неактивен
deadka написал:
Вообще в Вашей ситуации я бы разнес это поле fields на 2 , и было бы куда проще.
например? сейчас поиск провожу по некоторым полям без произвольных мин и макс SELECT * FROM `table_product` WHERE `fields` REGEXP '^(Год выпуска|2007)+(.*)?(Марка|Renault)+(.*)?(Коробка передач|ручная)+(.*)?$'
Отредактированно mmx (23.05.2013 14:20:48)
Неактивен
Те fields, что Вы привели - они имеют вид
ЧТО-ТО | ЕЩЕ ЧТО-ТО
Я имел в виду, что возможно лучше добавить в таблицу еще одну колонку и
ЧТО-ТО положить в один столбец, а
ЕЩЕ ЧТО-ТО в другой.
Неактивен
deadka написал:
Те fields, что Вы привели - они имеют вид
ЧТО-ТО | ЕЩЕ ЧТО-ТО
Я имел в виду, что возможно лучше добавить в таблицу еще одну колонку и
ЧТО-ТО положить в один столбец, а
ЕЩЕ ЧТО-ТО в другой.
например, так:
fields_name | fields_value
-------------------------------------
Год выпуска 2007
Марка Renault
Пробег 23000
Коробка передач ручная
Панорамный люк да
? Поля при поиске не обязательные, связи имхо между ними не будет и не возможно будет сопоставить или что то я недопонимаю?
Отредактированно mmx (23.05.2013 14:52:28)
Неактивен
mmx, Вы бы привели задачу свою более полно - таблицы, которые присутствуют, данные в них, и что вообще нужно, если еще что-то осталось непонятным. На первоначальный вопрос, имхо я ответил, текущая формулировка вопроса откровенна непонятна.
Неактивен
наверное оптимальный вариант для поиска по полям - создание новой таблицы, например:
CREATE TABLE IF NOT EXISTS `fields` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category_id` int(10) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL,
`value` varchar(255) NOT NULL,
`product_id` int(12) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
, но смущает то, что ранее при добавлении товара все поля и сам товар добавлялись одним инсертом, а сейчас = 1 в таблицу продукт + энное к-во полей в таблицу фиелдс или как то можно оптимизировать?
Неактивен
Преждевременная оптимизация - корень многих зол. Плюс что-то мне подсказывает, что поиск будет производиться куда как чаще, чем вставка . А текущая структура таблица гораздо больше соответствует нормальному быстрому поиску.
Неактивен
deadka написал:
А текущая структура таблица гораздо больше соответствует нормальному быстрому поиску.
К сожалению, по текущей структуре нельзя найти больше одного значения, хз как решить данную проблему
Неактивен