Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Хитрая выборка

325
10 декабря 2009 года
Franky
723 / / 10.08.2005
Здравствуйте, гуру SQL :)
Бьюсь вот над какой проблемой, может кто подскажет
Есть строка с параметрами в БД, созданная с помощью split, где разделитель | (вертикальная черта). Надо как-то сделать поиск по параметрам.
Пока записей мало можно было бы выкрутиться выборкой всей таблицы, разбором через explode и выводу уже по условиям, но это "не айс".
Пробовал составить строку запроса через регулярные выражения, но увы.

Строка для примера такая:
вася|пупкин|23|ул.Киселева|... и т.д.

Подскажите, пожалуйста!
416
10 декабря 2009 года
MaitreDesir
380 / / 02.01.2008
Первое. И главное. Зачем нужна БД, если в ней хранить строку с параметрами? Зачем вообще тогда нужна база? Не совсем понятен смысл задачи, опишите подробнее - для чего так надо делать, возможно есть более простые решения.
Второе. Какая СУБД? Это важно.
Третье. Есть такая вещь -
 
Код:
select ... from ... where <поле> like '%значение%';
. Попробуйте.
325
10 декабря 2009 года
Franky
723 / / 10.08.2005
1. вариант делать 30 записей в таблице и выборку по ним всем не очень нравится
2. MySQL
3. можно пример выборки LIKE с несколькими параметрами?
1
10 декабря 2009 года
kot_
7.3K / / 20.01.2000
Цитата: Franky
1. вариант делать 30 записей в таблице и выборку по ним всем не очень нравится
2. MySQL
3. можно пример выборки LIKE с несколькими параметрами?



На заметку:краткость далеко не всегда сестра таланта. Иногда она свидетельствует совсем об обратном.
По поводу того что "всем не очень нравится" - очень трудно понять ЧТО ВЫ ХОТИТЕ ДОБИТЬСЯ - вряд ли здесь хорошая идея вообще использовать LIKE.

325
10 декабря 2009 года
Franky
723 / / 10.08.2005
и не собираюсь использовать like. Вообще была попытка выбрать через регулярку, но не сработало (в них я вообще не силен)
2
11 декабря 2009 года
squirL
5.6K / / 13.08.2003
Цитата: Franky
и не собираюсь использовать like. Вообще была попытка выбрать через регулярку, но не сработало (в них я вообще не силен)



если уж вы так извратились - то да, можно использовать регулярку.
то, что это у вас не получилось мы поняли. теперь расскажите, что именно не получилось :)

325
11 декабря 2009 года
Franky
723 / / 10.08.2005
да я вообще в них не силен, о чем уже писал...
Была попытка такой вот выборки (переменные должны соответствовать определенным записям):
 
Код:
$st = "^(.*)|(.*)|$lgot|$city|$raion|$metro|$adr|$typ_h|(.*)|$year|(.*)";
$res = sql("SELECT * FROM `dir` where `text` REGEXP $st");

пробовал экранировать | - результат тот же т.е. его нет
8.2K
11 декабря 2009 года
Ora-cool
211 / / 20.09.2007
Автор, не занимайтесь ... В общем, не изобретайте велосипед) Проведите нормальную нормализацию данных и станет проще жить вам.
325
11 декабря 2009 года
Franky
723 / / 10.08.2005
по регулярке советы будут?
285
11 декабря 2009 года
Romik
479 / / 24.11.2002
В данном случае рекомендации по регуляркам не более чем медвежья услуга.
В Вашем случае следует провести нормализацию, как об этом уже было выше сказано.
Создайте следующую таблицу:
[highlight=sql]
CREATE TABLE`params`(
`id` int(11) NOT NULL auto_increment,
`related_object` int(11) NOT NULL,
`checked` bool(1),
`option_name` AS char(50) NOT NULL,
`option_value` AS char(255),
`default_value` AS char(255)
);
[/highlight]
выборка опций будет по related_object
пользуйтесь услугами реляционных баз данных, стройте отношения, укрепляйте связи!
325
12 декабря 2009 года
Franky
723 / / 10.08.2005
спасибо, попробую понять что за нормолизация такая :)
239
16 декабря 2009 года
Dolonet
1.7K / / 20.05.2000
Нормализация - это, например, создание 10 полей вместо одного, чтобы искать по точному соответствию. Или - если заранее известны все возможные значения - использование INT вместо VARCHAR.
55K
27 декабря 2009 года
quelime
5 / / 21.12.2009
Дело в том, что дополнительные таблицы не нужны. уже есть 1 таблица.
И выборку надо из неё сделать соответственно.
Спасибо за попытку. :

Еще варианты будут? ;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог