Database design 多个查询/级别

Database design 多个查询/级别,database-design,Database Design,我正在做一个推荐系统,它需要有多个(最多10个)级别。所以基本上当有人注册时,它会将他们设置为一个推荐id。所以我需要能够在levels表中添加多达10个级别,然后显示这些级别的所有推荐。如果您不明白,请询问,我会试着更好地解释。如果我理解正确,您需要两个表,用户和推荐 users有userid(PK)和其他用户数据,如姓名和内容 转诊具有refid(主键)、userid(FK)、useridref(FK)和转诊数据 当您需要查看用户有哪些引用时,您可以执行类似于SELECT*的操作,其中use

我正在做一个推荐系统,它需要有多个(最多10个)级别。所以基本上当有人注册时,它会将他们设置为一个推荐id。所以我需要能够在levels表中添加多达10个级别,然后显示这些级别的所有推荐。如果您不明白,请询问,我会试着更好地解释。

如果我理解正确,您需要两个表,
用户
推荐

users
userid
(PK)和其他用户数据,如姓名和内容

转诊
具有
refid
(主键)、
userid
(FK)、
useridref
(FK)和转诊数据

当您需要查看用户有哪些引用时,您可以执行类似于
SELECT*的操作,其中userid=?

编辑:好的,我现在终于得到了等级。在一般情况下,您需要一个递归查询,但是如果您一次只想测试一个级别,您可以这样做:

select usersreferred.* 
from referrals r1                                   -- level 1
  inner join referrals r2 on r1.useridref=r2.userid -- level 2
  inner join referrals r3 on r2.useridref=r3.userid -- level 3
  inner join users usersreferred on usersreferred.userid=r3.useridref
where r1.userid=?

您必须手动构建联接查询字符串,但这是一般的想法。给定一个用户id,该查询将向您显示所选用户引用该站点的所有级别3用户。

我不明白您所说的“级别”是什么意思。你能解释一下a级别是什么吗?我们如何确定10个推荐?我认为你需要给出一个场景和你的问题。cdeszaq,好吧。我有一张叫做levels的桌子。它允许我为refs添加行。假设我有3行。Id是:1、2和3。然后,我想回显登录用户最多3级的所有推荐。这个页面有意义吗?对于cdeszaq和Amir s,我为blindy发布了这个帖子:“好的,我有一个更好的方法来解释它lol.K,这就是它的工作原理。级别的工作是这样的:级别1将是我对网站的所有推荐。级别2将是我推荐的用户的所有推荐,等等。看到我在说什么了吗?”是的。问题是,我怎么知道哪个级别?因为,问题是,我永远不知道他们会达到多少水平。例如,我可以为你的例子做3次3级。但是,我无法知道等级表中有多少等级。@Justin,这个等级是什么?只是伯爵?你可以通过
selectcount(*)从userid=?
Blindy的推荐中获得它,好的。我有更好的方法来解释它lol.K,所以这就是它的工作原理。级别的工作是这样的:级别1将是所有的推荐我提到的网站。第2级将是我引用的用户的所有引用,依此类推。看到我在说什么了吗?@Blindy,好,酷,好。问题是,我现在没有推荐表,哈哈。。有一个levels表和accounts表:/@Blindy,当我这样做时:从帐户r1中选择*内部连接成员r2在r1上。id=r2.id内部连接成员r3在r2上。id=r3.id内部连接成员在成员上。id=r3.id其中r1.id='$aid'我是用我的用户名而不是我的引用输出的。。