- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
В поле таблицы БД такие варианты данных
1. [10*70, 30*20, 100*40]
2. [30*10]
3. [10,5*40]
4. [40*10,5]
5. [60*60, 10,5*60]
6. [25*25, 60*10,5]
7. [20*20, 10*30]
8. [110*100, 210,3*210,3]
Нужно отобрать все что содержит размер 10 - подходит 1,2,3,4,5,6,7. Не подходит - 8
1. Есть ли оператор, позволяющий взять вариант №1 - т.е. указать, что поле начинается с 10*
не совсем то, так как строка 8 тоже тогда берется.
2. Есть ли оператор, позволяющий взять вариант №2 - т.е. указать, что поле кончается на *10
не совсем то, так как строка 8 тоже тогда берется.
ps по остальным строкам как проверить, понятно. вопрос именно по этой.
Спасибо
используйте RLIKE вместо LIKE.
Регулярку сами составите?
используйте RLIKE вместо LIKE.
Регулярку сами составите?
Регулярки не умею. Да у меня тут бред получается.
Думаю, может брать все строки, а потом разбирать средствами php и проверять размеры.
А то вот что получается
LIKE по порядку
1-й 10* в начале строки
2-й *10 в конце строки
3-й 10, в начале строки
4-й содержит *10,
5-й в строке есть , 10*
6-й в строке есть , 10,
Средствами php так думаю. Как считаете - может так лучше?
Берем всю строку - в начало добавляем пробел, в конец запятую.
Дальше смотрим содержит ли строка [ 10*] [ 10,] [*10,]
Обработать нужно примерно 5000 строк.
3-й вариант. поправить записи в БД, т.е. сделать в БД в начало добавляем пробел, в конец запятую.
Можно я скажу мнение?
Структуру БД меняйте. То что у вас, это уныние. Структура БД не справляется со своей задачей. Разбивайте эти размеры на каждый столбец и потом поиск будет точный, быстрый и не напрягающий БД.
Довольно сложная регулярка получается. Неповоротливая в дальнейшем использовании.
Лучше структуру поменять.
Можно я скажу мнение?
Структуру БД меняйте. То что у вас, это уныние. Структура БД не справляется со своей задачей. Разбивайте эти размеры на каждый столбец и потом поиск будет точный, быстрый и не напрягающий БД.
Полностью согласен.
Т.е. нужно сделать так?
Таблица БД содержит 10 полей для вариантов размеров, в которых будут перечисленны размеры (т.е. одно поле раскидать в 1-10 ячеек, смортя сколько вариантов размеров для данной коллекции). Да?
Потом при поиске делать отбор типа такого
так будет проще базе?
---------- Добавлено 08.11.2013 в 16:03 ----------
Довольно сложная регулярка получается. Неповоротливая в дальнейшем использовании.
Лучше структуру поменять.
Согласен, поэтому на текущий момент сделал так.
1. вынимаю все id из таблицы и их варианты размеров
2. строку с размерами редактирую средствами php
3. строку с размерами проверяю на присутствие "10*", "*10," и т.д.
4. если присутствует - заношу id в новый массив
5. вынимаю из бд нужные данные по отобранным id
Да. Но есть ещё один вариант. Это создать отдельную таблицу, в которой будет
ID|ID tovar|razmer
и уже в ней закинуть индексы и делать поиск по ней. Удобство, что можно к 1 товару сразу сделать много записей, не плодя столбцы. Вижу это лучше в вашем случаи, если у вас по 10 размеров на 1 товар.
Да. Но есть ещё один вариант. Это создать отдельную таблицу, в которой будет
ID|ID tovar|razmer
и уже в ней закинуть индексы и делать поиск по ней. Удобство, что можно к 1 товару сразу сделать много записей, не плодя столбцы. Вижу это лучше в вашем случаи, если у вас по 10 размеров на 1 товар.
Леонид, поясните, пожалуйста.
ID|ID tovar|razmer
ID -понятно, просто id поля новой таблицы
ID tovar - id из таблицы с товарами
razmer - не понимаю, смысла же нет сюда писать [10*10, 20*20, 25*40, 40*60, 60*60 и т.д.]
---------- Добавлено 08.11.2013 в 16:26 ----------
Удобство, что можно к 1 товару сразу сделать много записей, не плодя столбцы. Вижу это лучше в вашем случаи, если у вас по 10 размеров на 1 товар.
А, понял, так ?
1|1200|10*10
2|1200|5*5
3|1200|20*20
4|1201|7*7
5|1201|8*8
Это круто, но не наглядно. Думаю как же поступить. Вообще вариант нравится, но опять же - удобно ли будет смотреть на неё. Спасибо
Леонид, поясните, пожалуйста.
ID|ID tovar|razmer
ID -понятно, просто id поля новой таблицы
ID tovar - id из таблицы с товарами
razmer - не понимаю, смысла же нет сюда писать [10*10, 20*20, 25*40, 40*60, 60*60 и т.д.]
---------- Добавлено 08.11.2013 в 16:26 ----------
А, понял, так ?
Это круто, но не наглядно. Думаю как же поступить. Вообще вариант нравится, но опять же - удобно ли будет смотреть на неё. Спасибо
На неё не надо смотреть. :)
Делаете поиск по этой таблице, а потом выводите по ID tovar из другой таблицы описание товара, который подошёл по поиску.
Есть ещё проблема, видимо решение лучшее такое.
Учитывая, что Вы подсказали Леонид.
Так как размер может быть и с запятой и их условно говоря неограниченное количество, есть смысл наверное сделать так
ID|ID tovar|razmer1|razmer2
где razmer1 - это по одной стороне, razmer2 - по второй.
Но опять же, как проводить отбор, если размер содержит запятую?
Как выбрать товары, где одна из сторон = 20
1|200|20|20 // т.е. тут размер товара 20*20
2|200|30|30 // тут 30*30
3|200|60|20,2 // тут 60*20,2
4|205|20,5|30 // тут 20,5*30
5|205|30|30
6|205|60|60
7|207|20,1|40,2
8|207|40,2|40,2
Леонид, подскажите, пожалуйста.
1. хорошее решение сделать по столбцу с размером для каждой стороны?
2. как проводить отбор, если запятая в размере, получается что опять лайкать LIKE '%%' нужно, что не есть хорошо как я понимаю.
Ну так храните не сантиметры, какие проблемы? (*10)
Менять архитектуру БД - самое верное направление.