Php 获取具有相同包id的用户

Php 获取具有相同包id的用户,php,mysql,database,Php,Mysql,Database,我有三个表一个是用户第二个是用户包,最后一个是包用户表包含一些信息,如名称、电子邮件等,并且用户包表包含用户ID,作为每个包的外键包ID和状态。一次只能激活一个程序包包表包含所有包。现在,我希望以这样一种方式获取记录:如果我登录到系统,我只能看到一个没有打开当前会话的匹配id的用户。获得该信息后,结果将存储在捐赠者表中。这样,用户之间就有了一种关系,谁将为谁付费。我有下面的查询,这是工作得很好,获得其他人的记录 $this -> db -> query("Select * from

我有三个表一个是用户第二个是用户包,最后一个是用户表包含一些信息,如名称、电子邮件等,并且用户包表包含用户ID,作为每个包的外键包ID状态。一次只能激活一个程序包表包含所有包。现在,我希望以这样一种方式获取记录:如果我登录到系统,我只能看到一个没有打开当前会话的匹配id的用户。获得该信息后,结果将存储在捐赠者表中。这样,用户之间就有了一种关系,谁将为谁付费。我有下面的查询,这是工作得很好,获得其他人的记录

$this -> db -> query("Select * from user JOIN user_packages ON 
user.id!='$id' AND user.canRecieve!='1' AND user.active='1' AND
user.id=user_packages.userID AND user_packages.status='1' ORDER BY RAND(),
user.id LIMIT 1");
现在我主要关心的是,只有那些用户应该对我可见,并且与当前用户具有相同的packgeID,包括上述条件。假设我的packageID为5,我想选择同样属于该packageID为5的个人/用户


因此,在尝试了许多查询之后,这里给出了答案,最终得到了给出正确输出的查询

$this -> db -> query("Select user.id, user.name, user.canRecieve,
user.active from (Select user.id, canRecieve, status, packageID, active from
user JOIN user_packages ON user.id='$id' AND user.canRecieve!='1' AND
user.active='1' AND user_packages.userID=user.id AND user_packages.status='1')
AS DONOR JOIN user ON user.id!='$id' AND user.canRecieve!='1' AND
user.active='1' JOIN user_packages ON user.id=user_packages.userID AND
user_packages.status='1' AND user_packages.packageID=DONOR.packageID ORDER BY
RAND(), DONOR.id LIMIT 1");

使用packgeid在查询中加入
packages
表您可以设计查询吗?