多个查询/级别

时间:2011-04-18 15:00:33

标签: database-design

我正在制作推荐系统,它需要有多个(最多10个)级别。所以基本上当有人注册时,它会将它们设置为推荐ID。因此,我需要能够在级别表中添加最多10个级别,然后显示这些级别的所有引荐。如果你不明白,请问我会更好地解释它。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要2个表格,usersreferrals

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

referralsrefid(PK),userid(FK),useridref(FK)和推介数据。

当您需要查看用户具有的引荐时,您可以执行SELECT * FROM referrals WHERE 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级用户。