таблица с полем ключевых слов

IgoX

Новичок
Реально ли ...

привет всем
как написать запрос что бы он сделал след:
есть табл с полем ключевых слов например
1| 5*
2| otelA 5*
3| otelB 5*

и выражения типа
aaa ddd otelB bbb 5*

нужно написать select что бы он выбрыл 3 запись.
Реально ли это написать на sql, без вложенных циклов на РНР
 

IgoX

Новичок
читал нужно использовать регулярные выражения но что то у меня с ними плохо
пробывал
select * from otels where keys_words regexp '[aaa]*[ddd]*[otelB]*[bbb]*[5\\*]*'

но так вибирается и 1 и 3 запись а нужна 3
 

IgoX

Новичок
такое условие задачи
представьте есть цены
1| 5* |100$
2| otelA 5* |110$
3| otelB 5* |120$
на все 5* отели 100$ кроме otelA 5* и otelB 5*

происходит перебор прайс листа и в соответствии правил происходят надбывки, поэтому неподходит 1 запись
 

Altex

Новичок
все слова отдельно понимаю, а что сказал не понятно.
 

IgoX

Новичок
попробую объяснить без таблиц есть прайс лист. Нужно его изменить с поправками. На все 5* отели хочу прибавить 100$. но как всегда есть исключения т.е. на все 5* отели накрутить 100$ кроме otelA b otelB. Создал таблицу правил
№| key_words|plus
1 | 5* |100$
2 | otelA 5* |110$
3 | otelB 5* |120$
Если так тоже непонятно зачем таблица,то как бы вы решили такую задачу.
 

Altex

Новичок
а в регексе указываешь какие слова исключать

-~{}~ 14.02.04 16:30:

или ещё раз попытайся объяснить критерий отбора записей
 

IgoX

Новичок
нужно отобрать всего одну запись в которой число совпадений слов будет максимальное
 

chira

Новичок
IgoX
покажи структуру таблиц.
похоже ты вроде бы и создал базу данных, а пытаешся работать с ней как с текстовым файлом.
 

IgoX

Новичок
Извиняюсь что плохо излагаю
Есть прайс который я перебираю и там есть колонка - имя отеля и еще куча всего например 'aaa defny ddd ee 5* rr'. Нужен select который выбирет 3 запись.

CREATE TABLE otels (
id tinyint(3) unsigned NOT NULL auto_increment,
keys_words varchar(250) default NULL,
money int(10) unsigned default NULL,
UNIQUE KEY id (id),
KEY id_2 (id)
) TYPE=MyISAM;

INSERT INTO otels VALUES (1,'garden 5*',100);
INSERT INTO otels VALUES (2,'5*',50);
INSERT INTO otels VALUES (3,'defny 5*',150);
 

chira

Новичок
название отеля и его свойства: 5 звездочный или 10 звездочный - это разные вещи , почему они у тебя в одном поле?
ты данные уже в таком виже закачиваешь от куда-то?
 

IgoX

Новичок
Давайте забудем о БД. Просто рассмотрим задачу может я не в ту сторону пошел.
Есть excel файл(прайс) в котором написано

name | price
aaa defny ddd ee 5* rr | 50
cc ffgty garde wd 5* gt | 50

задача нужно надбавить на все 5* отели 10$ кроме garden 5* на него 15$.

как бы вы решали такое?
 

chira

Новичок
ответ на самый первый вопрос:
Код:
SELECT p.*
FROM price p , otels o
WHERE o.id = 3
 AND p.name LIKE CONCAT('%',REPLACE(o.keys_words,' ','%'),'%')
может натолкнёт на мысли ...
 
Сверху