MySQL отслеживает систему пользователей и тегов - PullRequest
0 голосов
/ 28 ноября 2018

Пользователь может подписаться другим пользователем или тегом.

Моя база данных:

POSTS (id, user_id, name, content)
USERS (id, username)
TAGS (id, name)
TAGS_ASSIGNMENTS (post_id, tag_id)
USERS_FOLLOW (user_id, follow_user_id)
TAGS_FOLLOW (user_id, follow_tag_id)

Мне нужен один запрос, чтобы получить все сообщения, где я подписан на пользователейи теги ... Может ли кто-нибудь меня оскорбить?

Я могу создать по запросу для пользователей и один для тегов ... но не вместе

1 Ответ

0 голосов
/ 28 ноября 2018

В этом случае вы должны использовать как JOIN, так и UNION, попробуйте ниже:

select a.name, a.content from POSTS a where user_id in (
    select follow_user_id from USERS_FOLLOW where user_id = @userid)
UNION DISTINCT
select a.name, a.content from POSTS a where id in (
    select post_id from TAGS_ASSIGNMENTS a, TAGS_FOLLOW b where 
        a.tag_id = b.follow_tag_id and b.user_id = @userid)

Здесь @userid - идентификатор ввода пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...