【问题标题】:how to count values from a table and return true, only if the value is found 5 times using php mysql如何计算表中的值并返回true,仅当使用php mysql找到该值5次时
【发布时间】:2018-12-06 05:05:49
【问题描述】:

我正在使用 PHP 和 MySQL 构建一个类似用户的系统。

这是我的桌子

-------------- 
ID    value      
--------------- 
1       1           
2       0           
3       1
4       1
5       1
6       0   

我正在尝试在 php 中编写一个 mysql 查询,如果总值计数大于 5,则仅显示总值计数。即,如果在表中找到超过 5 条记录,则仅将查询返回为真.

有人可以帮帮我吗?我已经尝试了很多东西。

这是我迄今为止尝试过的代码

 $query = "  SELECT COUNT(value) AS value,
                    CASE
                    WHEN value > 0 THEN value ELSE 0 END
                    FROM users
            ";

 $query = $this->db->query($query);

 $query->result_array();

 if ($query->num_rows() > 0){

     echo "more than 5 records are found";

 } 

谢谢

(编辑 - 使问题更清楚)

因此,如果我们查看下表(TABLE 1),则在表中找到了 6 次 value = 1。所以查询应该返回true。这是因为我试图计算所有值,其中 value = 1,而不是 value = 0。我只想返回查询,如果 value = 1 被找到 5 次或更多次。

TABLE 1 
-------------- 
ID    value      
-------------- 
1       1           
2       0           
3       1
4       1
5       1
6       0  
7       1
8       1

如果我们查看下面的表 2,则 value = 1 在该表中仅出现 2 次。所以我们将查询返回为 false,因为我们需要在表中找到 value = 1 超过 5 次才能返回 true。

TABLE 2 
-------------- 
ID    value      
-------------- 
1       1           
2       0           
3       1
4       0
5       0
6       0  
7       0
8       0

我想在查询中实现这一点,而不是在使用 php.ini 的查询之外使用 if 语句。 ie, if($results > 5) { return true}

谢谢

【问题讨论】:

  • 这个不清楚,如果超过 5 行你想显示结果还是你想显示 value 大于 5 的行?
  • 在表格中找到超过 5 个结果的地方。我的代码很混乱
  • 我知道value > 1 THEN value ELSE 0 END 只计算 value = 1 而不是 0 的值。但是,如果我希望查询仅在找到 5 个或更多值时返回 true,我该怎么办
  • 你想要什么?列值的总和?
  • 为什么不使用 sum 而如果 sum>=5 则返回 true

标签: php mysql codeigniter case codeigniter-3


【解决方案1】:

希望对您有所帮助:

您可以使用count_all获取计数,然后获取用户记录

$count = $this->db->count_all('users');

if ($count > 5)
{
  $query = $this->db->get('users');
  $records = $query->result_array();
  print_r($records);
}

【讨论】:

  • 如果找到 5 个值怎么办?
  • @JustBaron 在那里很容易理解,使用>=
  • 啊,OP 问题与 OPs cmets 不同。道歉。
【解决方案2】:

如果存在 5 条或多于 5 条记录,您可以使用以下查询获取数据

select *
from users u
where (
  select count(*)
  from users
) >= 5

Demo

这里是另一个demo 如果表少于 5 行

【讨论】:

    【解决方案3】:

    如果你想得到列值中的值的总和,你可以使用这个。

        $data = $this->db->get('users')->result_array();
    
        foreach ($data as $row) {
            $num_value[] = $row['value'];
        }
        $num_value = array_sum($num_value);
        if($num_value > 5){
            echo 'value is more than 5';
        }
        else{
            echo 'value is equal or less than 5';
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2021-08-02
      • 1970-01-01
      • 2020-02-12
      相关资源
      最近更新 更多