我正在制作推荐系统,它需要有多个(最多10个)级别。所以基本上当有人注册时,它会将它们设置为推荐ID。因此,我需要能够在级别表中添加最多10个级别,然后显示这些级别的所有引荐。如果你不明白,请问我会更好地解释它。
答案 0 :(得分:1)
如果我理解正确,您需要2个表格,users
和referrals
。
users
有userid
(PK)和其他用户数据,如姓名和内容。
referrals
有refid
(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级用户。