获取具有相同包装ID的用户



我有3个表,一个是 user 第二个是 user_packages ,最后一个是 packages 用户表包含一些信息,例如名称,电子邮件等, user_packages 表包含 userId 作为foreferstrong>状态的每个软件包。一次只能激活一个软件包。软件包表包含所有软件包。现在,我想以这样的方式获取记录,如果我登录系统,我只能看到一个没有当前会话打开的匹配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 。假设我有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");

最新更新