获取具有相同包ID的用户

时间:2017-02-28 14:21:49

标签: php mysql database

我有3个表,一个是用户,第二个是 user_packages ,最后一个是用户表包含一些信息,如姓名,电子邮件等, user_packages 表包含 userID 作为外键 packageID 和<每个包的强>状态。一次只能激活一个包。 表包含所有包。现在我想以这样的方式获取记录:如果我登录系统,我只能看到一个用户没有打开当前会话的匹配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的人/用户。

User Table

User Packages Table

1 个答案:

答案 0 :(得分:1)

所以这是在经过多次查询尝试后得到正确输出的查询

的答案
$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");