- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброй ночи, форумчане! Возможно, кто-то знает, как решить подобную задачу верно.
Есть две таблицы: cats и files
files содержит описания файлов
Нужно сформировать запрос, чтобы выбрать из files: title, descr, id, tags
А из cats — только dir
(нужно только для вывода картинки: site.com/images/'_DIR_'/image.png)
Это легко решается, но не при условии наличие LIKE
Суть в том, что вводится запрос, который может быть в поле "tags", если есть совпадение по LIKE, то выводятся уже все данные.
Проблема в том, что, если используется LIKE, то выводит лютый бред (дублируется вывод),. Если делать GROUP BY, то дублирование прекращается, но информация из поля dir для каждого из выведенных файлов становится некорректной (например, у всех одинаковое значение). Зависит от того по какому полю группировать.
Заранее благодарен за ответы!
P.S: другую структуру не рассматриваю, к сожалению.
А таблицы как связаны? Покажите describe таблиц.
если используется LIKE, то выводит лютый бред (дублируется вывод),. Если делать GROUP BY
Если Вы напишете здесь эти 2 запроса, то шансы получить верный ответ возрастут многократно.
Выборку из двух таблиц сложно назвать "сложной"))) При правильной связи му таблицами легко пишется. Покажите структуру таблиц для начала
Вот запрос
"SELECT a.id, a.title, a.category, a.date, b.dir FROM files as a, cats as b WHERE `tags` LIKE ('%, ".$tag.", %') OR `tags` LIKE ('%, ".$tag."') OR `tags` LIKE ('".$tag.", %') AND a.category=b.id ORDER BY a.date DESC LIMIT 0,10";P.S: по поводу структуры, сбросил в первом же посте (обобщенные скрины без деталей). Первый скрин — cats, второй — files
Вот запрос
P.S: по поводу структуры, сбросил в первом же посте (обобщенные скрины без деталей). Первый скрин — cats, второй — files
Так попробуйте
SELECT a.id, a.title, a.category, a.date, b.dir FROM files as a left join cats as b
WHERE `tags` LIKE ('%, ".$tag.", %') OR `tags` LIKE ('%, ".$tag."') OR `tags` LIKE ('".$tag.", %')
AND a.category=b.id group by a.id ORDER BY a.date DESC LIMIT 0,10
Так попробуйте
SELECT a.id, a.title, a.category, a.date, b.dir FROM files as a left join cats as b
WHERE `tags` LIKE ('%, ".$tag.", %') OR `tags` LIKE ('%, ".$tag."') OR `tags` LIKE ('".$tag.", %')
AND a.category=b.id group by a.id ORDER BY a.date DESC LIMIT 0,10
SELECT a.id, a.title, a.version, a.category, b.dir FROM files as a left join cats as b WHERE tags LIKE ('%, запрос, %') OR tags LIKE ('%, запрос') OR tags LIKE ('запрос, %') AND a.category=b.id group by a.id ORDER BY a.date DESC LIMIT 0,15Имеем
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE tags LIKE ('%, игры, %') OR tags LIKE ('%, игры') OR tags LIKE ('' at line 1Ну дык выкиньте скобки и запятые из лайков - может быть и пропадёт ошибка.
SELECT a.id, a.title, a.category, a.date, b.dir FROM files as a left join cats as b
on a.category=b.id
WHERE `tags` LIKE ('%, ".$tag.", %') OR `tags` LIKE ('%, ".$tag."') OR `tags` LIKE ('".$tag.", %')
group by a.id ORDER BY a.date DESC LIMIT 0,10
Такого изврата с тегами я никогда не видел.
Делается стандартно присоединением:
Хотя обычно строка между /images/ и /тут_картинки_материала соответствует адресу материала, поэтому все необходимые слаги выбираются автоматом, а на конечных страницах материалов можно вообще встраивать в это место канонический адрес материала (без слешей по краям).
...WHERE (`tags` LIKE '%, ".$tag.", %' OR `tags` LIKE '%, ".$tag."' OR `tags` LIKE '".$tag.". %') AND a.category=b.id ORDER....