【问题标题】:SQL Select Posts Where Keywords Matches the Users InterestsSQL 选择关键字匹配用户兴趣的帖子
【发布时间】:2016-10-08 19:33:16
【问题描述】:

我目前在使用我的博客网络应用时遇到了一些技术问题。我想创建一个发现页面,用户可以在其中根据兴趣找到新帖子。我将通过在这些帖子中添加关键字来实现这一点。这样我就可以选择用户感兴趣的帖子和帖子关键字匹配的帖子。我现在意识到我已经走进了深水区。

经过大量研究,我现在决定分享我的问题,也许可以得到一些指导。我有 4 个表格,“users”“posts”“keywords”“interests”“keywords” 表包含 “post_id”“keyword_value”。 “interests”表包含 “user_id”“interest_value”

现在,我如何从 "posts" 表中选择与帖子相关的关键字与与当前用户相关的兴趣相匹配的帖子。

提前致谢。感谢所有回复。

数据样本:

“用户” [

“帖子”

“兴趣”

“关键词”

【问题讨论】:

  • 请提供样本数据和所需结果,以及您为解决问题所做的任何尝试。

标签: php mysql sql blogs


【解决方案1】:

如果您也提供了一些数据,那将会非常有帮助。我怀疑您对表格的描述有误 - 我认为您的意思是 keywords 表格具有 post_idkeyword_value 以及 interests 表具有 user_idinterest_value。如果是这种情况,那么这个查询应该可以工作:

SELECT *
FROM posts
WHERE post_id IN (
        SELECT post_id
        FROM keywords
        WHERE keyword_value IN (
                SELECT interest_value
                FROM interests
                WHERE user_id = @userId
                )
        )

【讨论】:

  • 感谢您的回复。无论您是否有兴趣与关键字匹配,您的解决方案都不会返回任何帖子。
  • 您确定正确提交@userId参数吗?例如,您是否尝试将我的代码中的@userId 替换为1
  • 是的,我查过了。
  • 我在原始答案中添加了一张图片,以显示我尝试查询的测试架构以及它产生的结果。
猜你喜欢
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2014-04-26
  • 2016-08-18
  • 1970-01-01
相关资源
最近更新 更多