- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть табличка с записями entry:
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR( 255 ),
`desc` VARCHAR( 255 ),
и т.д.
Есть табличка с тегами tags:
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR( 255 ),
и т.д.
Каждой записи соответсвуют несколько тегов, соответственно есть еще одна табличка entry_tags:
`id` BIGINT NOT NULL AUTO_INCREMENT,
`entry_id` BIGINT NOT NULL,
`tag_id` BIGINT NOT NULL,
Пользователь выбрал несколько тегов, записи с которыми ему надо показать. Задается массивом.
Ну и вопрос: как из таблички entry_tags выбрать эти самые записи с заданными тегами?
Не совсем понимаю что нужно, но может все же
... WHERE 'tag_id' IN (1,2,4,5453) ....
Не совсем понимаю что нужно, но может все же
... WHERE 'tag_id' IN (1,2,4,5453) ....
Этот запрос выберет все записи, в которых есть хотя-бы один тег, а надо только те, в которых они все есть.
ну AND используйте
LIKE '%1%' AND LIKE '%2%' LIKE '%3%'
ну AND используйте
LIKE '%1%' AND LIKE '%2%' LIKE '%3%'
Одна строка - один тег, AND соответственно выдаст нулевой результат.
Вы сами придумали структуру сайта, а теперь спрашиваете как с ней вам работать?
Вы сами придумали структуру сайта, а теперь спрашиваете как с ней вам работать?
Странный вопрос. Форум то для них и нужен.
Это достаточно типичная структура, к достоинствам которой можно отнести простоту БД, а к недостаткам - сложность вот таких замысловатых запросов.
Кстати, рабочий вариант:
SELECT `entry_id` FROM (SELECT `entry_id` , GROUP_CONCAT( `tag_id` ) AS `tag_id` FROM `entry_tags` GROUP BY `entry_id` ) AS tmp WHERE `tag_id` = '40,26,21,39,37,43,4'
Недостаток его - поле `tag_id` должно быть текстовое.
Есть немного быдолватый, но рабочий способ. Показываю примерное направление, код не проверял:
Кстати, рабочий вариант:
SELECT `entry_id` FROM (SELECT `entry_id` , GROUP_CONCAT( `tag_id` ) AS `tag_id` FROM `entry_tags` GROUP BY `entry_id` ) AS tmp WHERE `tag_id` = '40,26,21,39,37,43,4'
Эм.. а можно мне запись, которая соответствует tag_id 37 и 40 этим запросом... или 26 и 4 🍿
А правильное решение (для указанной структуры) - либо N (количество нужных тэгов) раз INNER JOIN-ить с entry_tags по entry_id
либо делать несколько запросов - выборка из выборки.
Эм.. а можно мне запись, которая соответствует tag_id 37 и 40 этим запросом... или 26 и 4 🍿
SELECT `entry_id` FROM (SELECT `entry_id` , GROUP_CONCAT( `tag_id` ) AS `tag_id` FROM `entry_tags` GROUP BY `entry_id` ) AS tmp WHERE `tag_id` = '37, 40' или `tag_id` = '26, 4'
Мда, ошибочка вышла, выбирает только те записи, которые имеют все теги и только их.
выбирает только те записи, которые имеют все теги и только их.
А что, не так надо? Значит, надо найти все entry_id, ссылающиеся на любой из тегов? Тогда как-то так: