Помощник
|
Подскажите с архитектурой базы данных и запросом |
Лёлик2
|
Сообщение
#1
|
||
|
|
||
|
|||
alexdrob |
30.12.2010, 3:42;
Ответить: alexdrob
Сообщение
#2
|
|
ну например одна таблица список филиалов, вторая товары, третья id филиала - id товара
filial id - name 1 - Филиал №1 2 - Филиал №2 3 - Филиал №3 tovar id - name 1 - Телевизоры 2 - Ноутбуки 3 - СВ-печи 4 - ЖК-Телевизоры svyaz f_id - t_id 1 - 1 1 - 2 2 - 3 2 - 2 3 - 4 3 - 2 то что ищите разбиваете на слова, составляете через вертикальную черту | select distinct f.name as f_name from svyaz, filial as f, tovar as t where f_id=f.id and t_id=t.id and t.name REGEXP 'жк-телевизоры|св-печи'
|
|
|
Лёлик2
|
Сообщение
#3
|
|
Фух, целый день читал книжку чтобы догнать суть вашего запроса - катастрофическая нехватка знаний!
Но мне кажется этот sql-запрос не выдаст на запрос пользователя "телевизоры" результат "филиал №1 и №3", а выдаст только №1, а №3 не будет получен так как там вначале слова телевизор есть приставка ЖК-. Хотя ЖК-телевизор это тоже телевизор! Я думаю нужно именно искать функцией поиска на вхождение искомой подстроки в строку перечня товаров. Вот только какой функцией? Я нашел locate, LIKE и с помощью регулярных выражений тоже можно маски поиска создавать. На чем бы вы мне посоветовали остановится? |
|
|
alexdrob |
30.12.2010, 19:07;
Ответить: alexdrob
Сообщение
#4
|
|
|
|
|
zidan |
30.12.2010, 19:27;
Ответить: zidan
Сообщение
#5
|
|
мне кажется этот sql-запрос не выдаст... Нужно просто проверять код на работоспособность, а не строить догадки. Причём в базу лучше всего добавить каких-нибудь потенциально проблемных записей, вроде "телевизор/dvd-проигрыватель" или "яйцерезкотелевизор".P.S. По-моему, поиск по названию здесь не уместен (или не должен определять структуру БД). Лучше сделать ещё одну таблицу - категория товаров. Тогда пользователь просто выберет категорию и не будет думать - почему в магазине нет теливизоров. |
|
|
Лёлик2
|
Сообщение
#6
|
|
а REGEXP по вашему что?) Да регулярные выражения, я уже понял до конца суть запроса, согласен - просто все в голове не сразу укладывается. Спасибо большое за помощь, очень мощная штука эти рег. выражения! Нужно просто проверять код на работоспособность, а не строить догадки. :rolleyes: |
|
|
Лёлик2
|
Сообщение
#7
|
|
Лучше сделать ещё одну таблицу - категория товаров. Тогда пользователь просто выберет категорию и не будет думать - почему в магазине нет теливизоров. Я собирался сделать поиск вариантов предложенных в определенном списке (без орфографических ошибок и с правильными окончаниями), теоретически действительно логичнее было бы сделать древовидную структуру от более общего к более частному, но так как база часто обновляется, ее нужно будет сортировать это трудоемко, мне проще допустить вариант когда в выдачу не попадет магазин, менеджер которого подал список товаров с ошибками - пусть в ворде проверяет, я все на себя взять не могу. Хотя полного плана в голове у меня еще нету, может я что-нибудь и придумаю в стиле как вы советуете. |
|
|
zidan |
30.12.2010, 23:42;
Ответить: zidan
Сообщение
#8
|
|
база часто обновляется, ее нужно будет сортировать это трудоемко Что трудоёмко? ORDER BY для 30-50 категорий? Ни в одном глазу не трудоёмко. Тот, кто будет заносить товар, выберет категорию в списке и не опечатается. Поиски логичнее сделать уже внутри категории. |
|
|
Лёлик2
|
Сообщение
#9
|
|
Что трудоёмко? ORDER BY для 30-50 категорий? Я имел ввиду сортировать те данные которые мне подадут с магазинов в общую базу MySQL. Т.е. менеджер подал информацию, что у него продаются "Портативные DVD-проигрователи" кому-то же нужно будет определить, что это частный случай общей категории "DVD-проигрователи" и занести ее туда - это я называл сортировкой базы. В общем пока решил сделать частично по вашим рекомендациям, частично упрощенный вариант первоначальной задумки: Программа на C++ будет обрабатывать данные с магазинов и раскидывать их по 64-ех общих категориях. MySQL база будет состоять из одной таблицы с двух полей: Номер филиала (целочисленного типа) и Товары - типа SET. SELECT буду делать через тот же REGEXP. Сейчас разбираюсь как правильно выбрать индексирование этого варианта, начитаюсь потом переспрошу правильно ли я понял. |
|
|
zidan |
31.12.2010, 14:28;
Ответить: zidan
Сообщение
#10
|
|
Т.е. менеджер подал информацию, что у него продаются "Портативные DVD-проигрователи" кому-то же нужно будет определить, что это частный случай общей категории Работу должен кто-то делать.) Это не сортировка а добавление категорий. Кстати, раскидывание по категориям я бы не доверил программе (предвижу много ошибок). Я вижу это так: менеджер забивает товары и обнаруживает, что в списке нет категории "DVD-проигрователи". Он звонит тебе (или ещё кому-то) и просит добавить категорию. Через две минуты категория есть в списке. Я не настаиваю на этом решении, но оно напрашивается. Сейчас разбираюсь как правильно выбрать индексирование Насколько я знаю MySQL (знаю не очень круто), текст можно индексировать только с помощью FULLTEXT INDEX. Вроде, REGEXP и LIKE не могут использовать это индексирование. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Большие базы Semrush кейвордов по разным тематикам! Много кейвордов с трафиком и без конкуренции! Volume, KD, CPC | 22 | Krok | 6742 | 12.4.2024, 5:17 автор: Krok |
|
Базы Youtube кейвордов с данными по конкуренции и Volume | 5 | Krok | 1458 | 11.4.2024, 5:12 автор: Krok |
|
Интеграция спортивных данных API. Коэффициенты БК, Live результаты | 15 | yaroslav89 | 6844 | 8.4.2024, 17:17 автор: spoyer_ru |
|
Свежие базы ключевых слов с подсказок гугла! | 125 | Krok | 68503 | 7.4.2024, 4:52 автор: Krok |
|
Базы досок объявлений России, Украины, Беларуси и Казахстана | 5 | freeax | 6458 | 10.3.2024, 15:07 автор: freeax |
Текстовая версия | Сейчас: 20.4.2024, 2:01 |