- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个数据库,用户可以在其中输入他们的兴趣。我想找到志趣相投的人。
兴趣表的结构是
兴趣 |用户名 |爱好 |地点 |水平 | matchinginterestids
为了简单起见,我们以两个用户为例。
我想做如下算法
我想我需要的是某种 for 循环,它将遍历 joe 的所有兴趣,然后每次在兴趣数据库中找到匹配项时进行更新。这在 MySQL 中甚至可能吗?
进一步的例子:
我是丹。我有3个兴趣。每个兴趣由 3 个科目组成:
其他人可能有其他兴趣
现在我希望查询在我以 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/
我正在尝试检索用户兴趣列表。所以我正在调用 graph api 来检索书籍、音乐等内容。似乎“喜欢”下的所有内容也包括书籍、音乐等下列出的所有内容。他们有任何异常(exception)吗,或者我可以调
这是一道代码组织题。我有将渐变背景放在 View 上的代码。我想在多个 View 上使用相同的代码 - 因此,我想将代码放在一个函数中,并在配置相关 View 时调用它。 我的问题是,放置这样一个函数
我是一名优秀的程序员,十分优秀!