【问题标题】:Get user with same package id获取具有相同包ID的用户
【发布时间】:2017-02-28 14:21:49
【问题描述】:

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

【问题讨论】:

  • 使用 packgeID 加入 packages 表查询
  • 你能设计查询吗?

标签: php mysql database


【解决方案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");

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 2011-05-01
    • 1970-01-01
    • 2012-09-05
    • 2015-09-02
    • 1970-01-01
    • 2020-07-25
    • 2020-05-19
    • 2013-12-26
    相关资源
    最近更新 更多