- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева

Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Значит есть задача выборки материалов по тегам (типам)
Есть типы
1. Тип: Звери, птицы, рептилии ...
2. Срок жизни: 5, 20,15, 20 лет ...
3. Цвет: зеленый, черный, белый ...
...
Например я указываю, что нужны
1. Вид: птицы, рептилии
2. Срок жизни 15, 20 лет
3. Цвет: зеленый, белый.
.....
Понятно что будут варианты
птицы, 15, белый
птицы, 15, зеленый
птицы, 20, белый
птицы, 20, зеленый
рептилии, 15, белый
рептилии, 15, зеленый
рептилии, 20, белый
рептилии, 20, зеленый
......
И вот тут возникает сама проблема.
Так как планируется хранить связи между типами и объектами
в таблице вида
-----------------------
| id объекта | id типа |
-----------------------
| | |
То возникает проблема выборки id объектов которые удовлетворяют вариациям типа
птицы, 15, белый
птицы, 15, зеленый
птицы, 20, белый
птицы, 20, зеленый
рептилии, 15, белый
рептилии, 15, зеленый
рептилии, 20, белый
рептилии, 20, зеленый
Потому что непонятно как выбрать из данной таблицы id объектов, что удовлетворяют любой из вариаций приведенных выше.
Есть идея, сделать доп поле в таблице содержащей данные об объектах где будут хранится данные о типах в виде
id_птицы-id_15-id_белый
И тогда выборку объектов можно сделать одним запросом. Но есть проблема в том что могут быть варианты, где например объект может иметь два цвета или при формировании выборки цвет может быть любой и т.д.
Собственно, кто что может посоветовать по данному вопросу, может кто-то натолкнет на мысль, даст совет по оптимизации выборки и хранения связей.
Делайте связанную таблицу
--------------------------------------------------
| id объекта | id типа | Значение или Id значения
--------------------------------------------------
При выборке просто присоединяете ее к основной таблице JOINом
Делайте связанную таблицу
--------------------------------------------------
| id объекта | id типа | Значение или Id значения
--------------------------------------------------
При выборке просто присоединяете ее к основной таблице JOINом
Немного не так меня поняли.
Объекту присвоены теги (типы), к примеру: птицы, 15, 20, белый, зеленый
Для пользователя они группированы по неким общим критериям
Например
1. Вид
2. Срок жизни
3. Цвет
А дальше к примеру пользователь выбрал
1. Вид: птицы, рептилии
2. Срок жизни 15, 20 лет
3. Цвет: зеленый, белый.
Исходя из критериев я сформировал
птицы, 15, белый
птицы, 15, зеленый
птицы, 20, белый
птицы, 20, зеленый
рептилии, 15, белый
рептилии, 15, зеленый
рептилии, 20, белый
рептилии, 20, зеленый
А дальше возникает вопрос, в каком виде лучше хранить связи, объекты-теги, что бы можно было делать выборки по
птицы, 15, белый
птицы, 15, зеленый
птицы, 20, белый
птицы, 20, зеленый
рептилии, 15, белый
рептилии, 15, зеленый
рептилии, 20, белый
рептилии, 20, зеленый
Что было понятней, пример http://hotline.ua/gd/386/17133-17300-17159/, правда там электроника, но для примера самое то
Вот меня интересует выборка по тегам группированных по общим критериям как на примере.
Знаю что такое делается такое на Drupal + Taxonomy Filter, но меня не интересует готовое решение. Меня интересует алгоритм выборки. Так как мне проще дописать до своей ЦМС нужный функционал, чем осваивать Drupal и пересаживать потом весь сайт на него.
Эммм, что не так-то? У вас связь один ко многим, связываются такие типы связи через промежуточную таблицу.
Предложенная мной структура этой таблицы
--------------------------------------------------
| id объекта | id типа | Значение или Id значения
--------------------------------------------------
Полностью повторяет ваши данные
1 | вид | птицы
1 | срок жизни | 15
1 | цвет | белый
1 | цвет | зеленый
2 | вид | птицы
2 | срок жизни | 20
2 | цвет | белый
2 | цвет | зеленый
3 | вид | рептилии
3 | срок жизни | 15
3 | цвет | белый
3 | цвет | зеленый
и т.д....
Эммм, что не так-то? У вас связь один ко многим, связываются такие типы связи через промежуточную таблицу.
Предложенная мной структура этой таблицы
--------------------------------------------------
| id объекта | id типа | Значение или Id значения
--------------------------------------------------
Полностью повторяет ваши данные
1 | вид | птицы
1 | срок жизни | 15
1 | цвет | белый
1 | цвет | зеленый
2 | вид | птицы
2 | срок жизни | 20
2 | цвет | белый
2 | цвет | зеленый
3 | вид | рептилии
3 | срок жизни | 15
3 | цвет | белый
3 | цвет | зеленый
и т.д....
Хорошо
А как тогда выбирать id_обьекта, к примеру если пользователь выбрал
1. Вид: птицы, рептилии
2. Срок жизни 15, 20 лет
3. Цвет: зеленый, белый.
А дальше как из предложенной вами таблицы получить id_объектов удовлетворяющих одному из условий.
птицы, 15, белый
птицы, 15, зеленый
птицы, 20, белый
птицы, 20, зеленый
рептилии, 15, белый
рептилии, 15, зеленый
рептилии, 20, белый
рептилии, 20, зеленый
Есть идея
делать таблицу такого вида
id_объекта | вид | срок_жизни | цвет
--------------------------------------
1 | птицы | 15 | белый
1 | птицы | 15 | зеленый
2 | птицы | 20 | белый
3 | птицы | 20 | зеленый
4 | рептилии | 15 | белый
5 | рептилии | 15 | зеленый
6 | рептилии | 20 | белый
7 | рептилии | 20 | зеленый
а дальше выбирать таким запросом
SELECT id_объекта FROM table WHERE (вид='птицы' OR вид='рептилии' ) AND (срок_жизни='15' OR срок_жизни='20' ) AND (цвет='белый' OR вид='зеленый')
тогда выборка одним проходом, правда интересует не будет ли сильно медленной такая выборка при количестве записей порядка 10-100к