Выборка по полю в запросе

SELECT p.*, n.*, t.title_alt AS alt 
        FROM podp p
        LEFT JOIN news n ON n.parent = p.id_b
        LEFT JOIN tag_stats t ON t.id = p.id_b AND p.types = 'tag'
WHERE n.tag LIKE '%t.alt|%'

Что та запутался, такая выборка работает?

WHERE n.tag LIKE '%t.alt|%'

Есть таблица подписок, в ней строки, пользователя. Который в свою очередь подписывается на блог и на теги. Записи в ней разделены путем поля p.types = 'tag'

Необходимо выбрать все записи из таблицы news, в которых найдено вхождение where n.tag LIKE '%t.alt|%'

Пример таблиц

#Таблица подписок, id строчки и на что подписан пользователь
create table main (
  id int, 
  id_podpis int, 
  type enum('tag', 'news')
);

insert into main 
values 
  (1, 44, 'tag'), 
  (2, 75, 'news'), 
  (3, 66, 'tag');
###########################################################

#Таблица тегов, содержит id тега и альтернативное имя
create table tag (
  id int, 
  alt varchar(32)
);

insert into tag 
values 
  (44, 'otzyv'), 
  (66, 'yandex');
############################################


#Новостей в котором поле содержит наименование тегов, теги которые закреплены за публикацией
create table news (
  id int, 
  title varchar(32),
  tags varchar(255)
  
);

insert into news 
values 
  (66, 'Новость1', 'нет указанных тегов у новости'), 
  (74, 'Новость2', 'otzyvy|отзывы, google|Гугле'), 
  (44, 'Новость3', 'yandex|Яндекс');
############################################

#########Результат##########################
#Необходимо выбрать все записи из таблицы, выборка по id пользователя. Пока убрана дабы не запутаться
#Если строчка принадлежит тегу, узнаем альтернативное имя тега, для выборки записией по нему из таблицы новостей
#############################################

https://sqlize.online/?phpses=null&sqlses=e059f96793e00df0f349accb194d822c&php_version=null&sql_version=mysql57

Хоте бы составить запрос на выборку новостей по тегам. Затем попробую добавить запрос на выборку тех новостей на которые возможно пользователь подписан. То есть пользователь подписывается и на теги и на новости. Может что подписался на новость, за которой закреплен тег. Тег на который пользователь так же может быть подписан.


Ответы (1 шт):

Автор решения: Akina

Если я верно разобрался в этой каше, то нужен такой запрос:

SELECT *
FROM main
JOIN tag ON main.id_podpis = tag.id AND main.type = 'tag'
JOIN news ON LOCATE(CONCAT(tag.alt, '|'), news.tags)

fiddle

→ Ссылка