хочу при создания новости, на сайте, добавлять к ней теги. Пользователь который зарегистрировался выбирает теги, которые ему интересны. Когда добавляется новость и теги, которые заданы для новости найдены у пользователя в любимых- выводить ему новость.
Как правильно построить mysql таблицы и делать запрос на поиск по тегам ?
Почитайте про Many-to-Many relations.
То что вам нужно.
Если коротко:
Таблица тегов содержит id/title.
связи тег-новость и тег-пользователь хранятся в отдельных таблицах связи (Например: news_tag) с составным индексом (Например: PRIMARY KEY (news_id,tag_id)).
freshik312, подписка на тэги делается по аналогии. в самом простом варианте вы можете придумать ее сами. Заметьте, что начальная база очень простая. Больше проблем на фронте.
Dmitry Bay, если я правильно понял, таблица post_tag и user_tag будет иметь вид:
post_tag
post_id | tag_id
1 | 2
1 | 3
1 | 7
2 | 2
2 | 7
2 | 15
user_tag
user_id | tag_id
1 | 5
1 | 7
1 | 11
если да, как теперь будет выглядеть sql запрос на поиск tag_id который есть в новости на наличие его у пользователя ? (желательный результат: 1 строка - 1 юзер)
Dmitry Bay, суть в том, что я пишу телеграм бота, который рассылает инфу о скидках на шмотки. парень(админ) на сайте заполняет форму, после ее заполнения нужно собрать инфу о указанных тегах(размерах), после поиск того, кто подписался на такие теги(размеры) и разослать им инфу