我不确定我的方法是否是根据我的 mysql 模式执行此操作的正确方法,因为事实证明这很困难,因为用户最多可以有三个标签,而一篇帖子也最多可以有三个标签。
例如,如果一篇文章有标签;音乐,技术。并且用户具有标签音乐、运动。用户将能够看到该帖子,因为标签 Music 存在于用户个人资料和帖子中。
我的表格如下:
个人资料 包含以下列:
Profile_id | tag1 | tag2 | tag3
帖子有栏:
post_id | author | item | tag1 | tag2 | tag3.
表中的每个标签都与特定标签相关。例如。 tag1
= 音乐,tag2
= 体育等
根据用户在编辑他们的个人资料或发帖时是否勾选它,在表中插入一个标签,因此标签可以有一个值 NULL
。
最佳答案
理想情况下,您希望更多地规范化您的数据库。创建一个名为 Tags
并具有列 tag_id 和 tag_name 的新表将比多列更灵活。例如,如果您希望帖子有 100 个或更多标签怎么办?
创建一个管理帖子和标签之间关系的新表(即 post_tags
),以及另一个用于管理标签和用户的表(user_tags
)会让你做得更好.
例如,您可以根据用户的兴趣查找所有帖子:
select p.*
from users u
join user_tags ut on u.user_id = ut.user_id
join post_tags pt on ut.tag_id = pt.tag_id
join posts p on p.id = pt.post_id
where u.user_name = 'theUser'
请记住,您需要两个多对多表来拥有两个 ID 的复合键,并检查您的查询是否存在可能的重复项等。
关于mysql - 显示具有相同用户 'tags' 或 'categories' 的所有帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859140/