Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Реально ли реализовать поиск в MySQL таблице ? Проблема с неоднородностью данных.
Нужно реализовать поиск, с условиями сравнения. Т.е. искать не просто age=25, а допустим age>20 and rost<180 .
Как реализовать не знаю, ведь все эти данные(рост, вес, возраст) по которым ведется отбор находятся в одной ячейке.
Для наглядности скрин:
Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010 Откуда: Minsk
Помог: 3 раз(а)
Сделайте эти данные в отдельных полях. Иначе это не соответствует 3-й форме нормализации БД. А так - регулярные выражения. И то, это будет некрасиво, неправильно, трудно.
Покинул форум
Сообщений всего: 126
Дата рег-ции: Февр. 2010
Помог: 0 раз(а)
Это не результат моих записей, до меня так было.
Пит
Отправлено: 09 Октября, 2010 - 12:14:01
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Май 2010
Помог: 0 раз(а)
ну считай строку из БД, разбей ее по разделителю "|" в массив, и вытворяй что хочешь - та же миниБД получится с уникальными полями
HotBird
Отправлено: 09 Октября, 2010 - 12:23:07
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010
Помог: 2 раз(а)
Однозначно лучший вариант это переделать базу и разнести эти данные по разным полям. Но если уж никак нельзя, то нужно тогда в цикле проверять каждую строку что увеличивает время работы скрипта.
if($exploded_line[5]> 20 and $exploded_line[8]<180)
//далее выполнаете нужные вам действия
----- Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев. Качественный хостинг по доступной цене
garvey
Отправлено: 09 Октября, 2010 - 12:28:08
Частый посетитель
Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010 Откуда: Minsk
Помог: 3 раз(а)
HotBird, как можно доверять хостингу, у которого в шапке notice вылазит?
Покинул форум
Сообщений всего: 114
Дата рег-ции: Сент. 2010
Помог: 2 раз(а)
garvey
1. Вопрос не потеме.
2. Я перехожу по ссылке из подписи и никаких нотисов не вылазит.
3. Не доверяете не пользуйтесь. Я перебрал несколько хостингов и этот оказалса лучшим.
А на счёт вопроса автора темы. Есть другая сердитая идея. Данные по которым производится поиск являются целыми числами и находятся опредилённом диапазоне. Например age имеет диапазон 0-100. Если нам нужно выбрать записи где age>20 то можно сделать так:
----- Человек, сделавший синтаксический анализатор PHP на одном регулярном выражении, займет достойное место среди гениев. Качественный хостинг по доступной цене
JustUserR
Отправлено: 09 Октября, 2010 - 21:53:31
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Zend Приведенная вами структура таблицы БД подразумевает использование дополнительных функций для определение выборки по некоторому критерию - при этом наиболее эффективным методом является создание процедур на сервере БД в виде PL/SQL - или использовать встроенные функции при возможности сконструировать статический целевой запрос со сравнение по alias-имени - такой подход использует прямое обращение к представлению инфомационных полей и выполняется значительно эффективнее по сравнению с копирование данных на сервер приложений
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.