gpt4 book ai didi

MySQL 多重兴趣匹配问题

转载 作者:可可西里 更新时间:2023-11-01 07:49:13 24 4
gpt4 key购买 nike

我有一个数据库,用户可以在其中输入他们的兴趣。我想找到志趣相投的人。

兴趣表的结构是

兴趣 |用户名 |爱好 |地点 |水平 | matchinginterestids

为了简单起见,我们以两个用户为例。

  • 用户Joe可能有10条不同的兴趣记录
  • 用户greg可能有10条不同的兴趣记录。

我想做如下算法

  • 获取 Joe 的兴趣记录 1,并从兴趣数据库中查找匹配的爱好和地点。将任何匹配的兴趣 ID 放入匹配字段中。然后去joe的兴趣记录2等。

我想我需要的是某种 for 循环,它将遍历 joe 的所有兴趣,然后每次在兴趣数据库中找到匹配项时进行更新。这在 MySQL 中甚至可能吗?


进一步的例子:

我是丹。我有3个兴趣。每个兴趣由 3 个科目组成:

  • 丹猫,营养,毛发
  • Dan superlens、dna、显微镜
  • 短片、慢动作、打斗场面

其他人可能有其他兴趣

乔:

  • 乔猫,营养,力量
  • Joe superlens、dna、显微镜

  • Moe mysql,queries,php
  • 萌胶片、specialfx、相机
  • Moe superlens,dna,显微镜

现在我希望查询在我以 Dan 身份登录时返回以下内容:

这是您的兴趣匹配项:

---对猫营养毛感兴趣
乔对猫和营养很感兴趣
Joe 和 Moe 对超透镜、DNA、显微镜很感兴趣
Moe对电影感兴趣

查询需要遍历 Dan 的所有兴趣,并比较 3,2,1 主题匹配。

我可以在 php 中循环执行此操作,但它会一直调用数据库以获取结果。我想知道是否有一种巧妙的方法可以使用单个查询或者 3 个单独的查询来查找 3 个匹配项,一个用于 2 个,一个用于 1 个。

最佳答案

这对于 MySQL 绝对是可能的,但我认为您可能会以一种尴尬的方式进行操作。我将从按如下方式构建表格开始:

TABLE Users ( userId, username, location )
TABLE Interests( interestId, hobby )
TABLE UserInterests( userId, interestId, level )

当用户添加兴趣时,如果以前没有添加过,则将其添加到Interests 表中,然后再将其添加到UserInterests 表中。当您想要查看附近有类似兴趣的其他人时,您可以简单地查询 UserInterests 表以查找其他有类似兴趣的人,该表已经为您提供了所有这些信息:

SELECT DISTINCT userId
FROM UserInterests
WHERE interestId IN (
SELECT interestId
FROM UserInterests
WHERE userId = $JoesID
)

这可能可以在没有子查询的情况下以更优雅的方式完成,但这是我现在想到的。

关于MySQL 多重兴趣匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5906346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com