【问题标题】:How to count all users in database with some specific attribute in Codeigniter如何在 Codeigniter 中计算数据库中具有某些特定属性的所有用户
【发布时间】:2015-09-29 08:55:41
【问题描述】:

我有一张经销商和用户的表格。现在每个经销商都有自己的用户。每个用户都通过一个名为 key 的字段映射到该经销商。因此,每个用户都会有一个名为 key 的字段,其中保存了经销商的密钥。

现在我有一个名为分配块的文件。这是经销商可以拥有的最大用户数。现在,例如,经销商有 100 个用户的分配块,但最初只插入 10 个用户。所以我想打印他被允许添加的剩余用户。所以分配block-intitals_users。那将是 100-10 所以在经销商登录时我想显示他可以添加多少用户。

请帮我生成一个查询来计算他可以使用的剩余用户数。

【问题讨论】:

  • 能否分享一下表名,以及表的设计供大家看看?
  • @MaK 表名是经销商和用户。并添加了表格结构
  • 我浏览了 CI 用户指南,发现 $this->db->having('user_id = 45');在这种情况下可能会有所帮助,但不知道我如何在这里使用它
  • CI 只提供 SQL 的抽象,仅此而已。您不是在寻找 CI 特定功能。空无一人。至少我所知道的没有。您应该对SELECT COUNT(users) WHERE key = resellerKey 使用良好的 SQL,并将其从经销商的分配块中减去。
  • @ROAL 如何在这里传递密钥?你能发布一个带有查询的答案吗

标签: php codeigniter


【解决方案1】:

让我们分步进行:假设我们正在与您的表中的经销商Zalak 合作,其分配块大小为500,键为Zalak-+76-6-500-1,id 为6

查找属于经销商的用户数量

SELECT COUNT(*) AS CurrentUserTotal FROM Users WHERE key = 'Zalak-+76-6-500-1';

查找该经销商的 allocation_block 值

SELECT allocation_block AS AllowedUserTotal FROM Resellers WHERE id '6';

将它们放在一起以同时获得两者

SELECT 
    COUNT(u.*) AS CurrentUserTotal, 
    r.allocation_block AS AllowedUserTotal 
FROM Users u 
JOIN Resellers r 
    ON (u.key = r.key) 
WHERE r.id = '6';

做数学以获得你所追求的价值

SELECT 
    COUNT(u.*) AS CurrentUserTotal, 
    r.allocation_block AS AllowedUserTotal,
    SUM(AllowedUserTotal - CurrentUserTotal) AS RemainingUserTotal
FROM Users u 
JOIN Resellers r 
    ON (u.key = r.key) 
WHERE r.id = '6';

把它们放在一起

使用 CI,您现在可以这样做:

public function getRemainingAllowedUsers( $reseller_id ) {

    $SQL = "
        SELECT 
            COUNT(u.*) AS CurrentUserTotal, 
            r.allocation_block AS AllowedUserTotal,
            SUM(AllowedUserTotal - CurrentUserTotal) AS RemainingUserTotal
        FROM Users u 
        JOIN Resellers r 
            ON (u.key = r.key) 
        WHERE r.id = '" . $reseller_id . "';
    ";
    $query = $this->db->query($SQL);
    $result = $query->row();

    $current_users   = $result->CurrentUserTotal;
    $allowed_users   = $result->AllowedUserTotal;
    $remaining_users = $result->RemainingUserTotal;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-13
    • 2018-02-23
    • 2021-01-12
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多