对多个Mysql语句进行分组以获取多个状态的计数[重复]

2024-01-02

目前,我正在使用 Mysql 和 CodeIgniter 在特定时间范围内从数据库中获取条目。每个条目在数据库中的状态为 D、N、Y。现在,为了显示此数据,我对每个状态都有一个不同的语句,我想将其分组为 1 个语句。

型号类别:

public function get_records_draft($st_date,$end_date){
        $this->db->select('*');
        $this->db->from('crm_listings');
        $this->db->where('cast(added_date as date) BETWEEN "' . $st_date . '" AND "' . $end_date . '" AND status= "D"');

         return $this->db->get();
     }

     public function get_records_unpublish($st_date,$end_date){
        $this->db->select('*');
        $this->db->from('crm_listings');
        $this->db->where('cast(added_date as date) BETWEEN "' . $st_date . '" AND "' . $end_date . '" AND status= "N"');

        return $this->db->get();
     }

     public function get_records_publish($st_date,$end_date){
        $this->db->select('*');
        $this->db->from('crm_listings');
        $this->db->where('cast(added_date as date) BETWEEN "' . $st_date . '" AND "' . $end_date . '" AND status= "Y"');

        return $this->db->get();
     }

在我的控制器类中,我获取这些数据并以表格的形式显示它:

$data = $this->user_model->get_records_draft($startDate,$endDate);
$data1 = $this->user_model->get_records_unpublish($startDate,$endDate);
$data2 = $this->user_model->get_records_publish($startDate,$endDate);

$output .= '
              <div class="table-responsive">
                 <table class="table table-bordered table-striped">
                    <tr>
                    <th>Draft</th>
                    <th>Unpublish</th>
                    <th>Publish</th>
                    </tr>
              ';
           if($data->num_rows() > 0)
           {
            $output .= '
               <tr>
               <td>'.$data->num_rows().'</td>
               <td>'.$data1->num_rows().'</td>
               <td>'.$data2->num_rows().'</td>
               </tr>
            ';
            
           }
           else
           {
              $output .= '<tr>
                 <td colspan="5">No Data Found</td>
                 </tr>';
           }
           $output .= '</table>';
           echo $output;

这是我的视图类中的 AJAX 请求:

$('#alertbox').click(function(){
            var startDate = $('#startDate').val();
            var endDate = $('#endDate').val();
            // var status = $('#status').val();
            if(startDate != '' && endDate != '' ){
            $.ajax({
                url:"<?php echo base_url(); ?>testcontroller/fetch_status",
                method:"POST",
                data:{startDate:startDate, endDate:endDate},
                success:function(data){
                    $('#result').html(data)
                }
            })
            }else{
                alert("Please enter a date");
            }
        })

我的问题是,无论如何都可以将所有这些分组到一种方法中,该方法会将它们全部分类到我的控制器类中的特定标题中。

我尝试在 phpmyadmin 中使用以下查询,它给出了正确的输出,但我不知道如何在模型和控制器类中执行相同的操作:

SELECT COUNT(status) FROM `crm_listings` WHERE added_date BETWEEN '2021-09-23' AND '2021-09-29' GROUP BY status

Use CASE语句而不是多个查询

Model:

public function summary($st_date,$end_date){
      $this->db->select("
         SUM(CASE WHEN status = 'D' THEN 1 END) AS draft,
         SUM(CASE WHEN status = 'N' THEN 1 END) AS unpublish,
         SUM(CASE WHEN status = 'Y' THEN 1 END) AS publish"
      );
      $this->db->where('added_date >=', $st_date);
      $this->db->where('added_date <=', $end_date);
      return $this->db->get('crm_listings');
 }

View:

不要在控制器中制作 HTML,因为这在 MVC 中是一种不好的做法。使用foreach在视图文件中循环以显示值 阅读更多关于来自CI Views https://codeigniter.com/userguide3/general/views.html#creating-loops

<div class="table-responsive">
    <table class="table table-bordered table-striped">
        <tr>
           <th>Draft</th>
           <th>Unpublish</th>
           <th>Publish</th>
         </tr>
    <?php      
       if(isset($data) && count($data) > 0){
          foreach($data as $row ){ ?>
           <tr>
           <td><?= $row->draft ?></td>
           <td><?= $row->unpublish ?></td>
           <td><?= $row->publish ?></td>
           </tr>
       <?php } //Foreach end here

          } else { ?>
          <tr>
             <td colspan="5">No Data Found</td>
          </tr>
       <?php } ?>
      </table>

阅读更多关于MySQL 案例陈述 https://dev.mysql.com/doc/refman/5.7/en/case.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对多个Mysql语句进行分组以获取多个状态的计数[重复] 的相关文章

  • 将 PHP 中的 openssl AES 转换为 Python AES

    我有一个 php 文件 如下所示 encryption encoded key c7e1wJFz PBwQix80D1MbIwwOmOceZOzFGoidzDkF5g function my encrypt data key encrypt
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • 转义用户数据,无需魔法引号

    我正在研究如何在来自外部世界的数据被用于应用程序控制 存储 逻辑等之前正确地对其进行转义 显然 随着 magic quote 指令在 php 5 3 0 中很快被弃用 并在 php6 中被删除 对于任何想要升级并进入新语言功能 同时维护遗留
  • 如何使用 php DOM 获取 内的值?

    我如何使用 php DOM 获取 内的值 这是我的 xml 中的一些代码
  • PHP 中的静态类初始值设定项

    我有一个带有一些静态函数的辅助类 类中的所有函数都需要一个 重 初始化函数来运行一次 就好像它是一个构造函数 有实现这一目标的良好实践吗 我唯一想到的就是打电话init函数 如果它已经运行过一次 使用静态 initialized变种 问题是
  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 优雅地退出 Laravel 作用域

    我有一个范围 它根据用户角色以限制方式起作用 您可以将一组规则转发到限制数据库最终输出的范围 一个非常简化的角色限制示例 first name foo 只会返回其记录first name开始于foo 这实际上意味着我已禁止具有该角色的用户查
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • 当路由不存在时重定向 laravel 4

    我正在使用 laravel 4 当我的项目处于生产模式时 我得到 抱歉 找不到您要查找的页面 当我到达一条不存在的路线时 当我 grep 我的代码时 它在两个地方找到 vendor symfony debug Symfony Compone
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • Yii 未检测到骆驼案例操作

    伊伊正在给我404 Error如果我声明这样的操作 站点控制器 php public function actionRegisterUser 这就是我在main php label gt Register User url gt site
  • 将 echo 和 print 合并到一个语句中

    echo 1 print 2 3 返回 214 脚本如何以 14 结尾 当你这样做时 echo 1 print 2 3 PHP 会做 demo http codepad viper 7 com OfrNrs line op fetch ex
  • 使用 Imagick 动态图像创建/Apache 标头

    在将现有的稳定网站转移到新服务器时 我遇到了一些使用 Imagick 动态创建图像的代码的间歇性问题 该代码解析 GET 查询 例如 example com image php ipid 750123 r 0 w 750 h 1000 然后
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • 管理产品页面自定义字段显示在购物车和结账中

    我在产品页面的常规设置选项卡上的 WooCommerce 管理中创建了一个自定义字段 以插入几天的制造时间 我想在购物车和结帐页面上每个产品名称上方显示此自定义字段值 这是我的代码 Insert a Custom Admin Field f
  • 错误 1305 (42000):保存点...不存在

    我的 MYSQL 数据库中有这个 SQL 存储过程为空 所以我猜没有隐式提交 DROP PROCEDURE IF EXISTS doOrder DELIMITER CREATE PROCEDURE doOrder IN orderUUID
  • mysql 查询选择当月的所有行?

    我有一个名为 startdate 的日期时间类型的列 我必须获取当前月份的开始日期和结束日期之间的所有行 即从 1 11 2014 到 30 11 2014 select from your table where year curdate
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时

随机推荐

  • WKWebView 是否使用 Safari 的 cookie?

    根据苹果文档 cookie 在所有应用程序之间共享 并跨进程边界保持同步 但有这个iOS Note iOS 中的应用程序之间不共享 Cookie 所以基本上我不能在我的应用程序中使用 Safari 的 cookie iOS 安全沙箱禁用应用
  • ZF2 SessionManager 用法

    我是 ZF2 的新手 不太习惯如何做事 我想使用会话来跟踪用户 记住我 我在课堂上有这样的代码 sessionManager new Zend Session SessionManager sessionManager gt remembe
  • 聚合物纸张输入和表格提交

    我正在开发论坛主题并开始使用 Web 组件 但表单元素不起作用 我有这样的东西
  • Mac QuickTime 组件调试

    首先 我是Mac编程的新手 我已经下载了马卡姆项目 http webcam osx sourceforge net index html并使用 Xcode 4 1 成功将调试版本编译为 32 位代码 输出是一个 QuickTime 组件 我
  • 如何读取作为 Blob 文件存储在 Azure 存储中的 Excel 文件

    我想使用 C 中的 Epplus 包读取作为 Blob 存储在 Azure 存储容器中的 Excel 文件 我尝试用这段代码做一些事情 string uri blob Uri AbsoluteUri FileInfo fileInfo ne
  • 如何在 CLR 存储过程中使用实体框架?

    我期待将所有逻辑 作为操作 Entity Framework 4 对象实现 移至服务器端 它看起来会很简单 由于应用程序结构 并且有益 因为我只有一台旧笔记本电脑作为客户端和一台运行 SQL Server 2008 的强大服务器 并且为逻辑
  • 在 Java 中存储颜色 - byte;byte;byte 与 byte[3] 与 int

    我需要存储大量 RGB 颜色对象 对于一些常见用途 它们占用了我的应用程序总内存的 8 到 12 我目前将其定义如下 class MyColor byte red byte green byte blue 我假设 大多数 JVM 实际上对每
  • Python:如何在列表中查找重复项并通过添加渐进字母重命名它们来更新这些重复项

    我有一个这样的项目列表 T1 T2 T2 T2 T2 T3 T3 我需要确保重复项被重命名并添加了渐进字母 如下所示 T1 T2A T2B T2C T2D T3A T3B 但前提是同一项目出现超过 1 次 另外 是否可以在不生成新列表的情况
  • Code::Blocks 无法编译应用程序

    这是我的你好世界代码 include
  • Mongoid 和 has_secure_password

    我正在尝试使用 mongoid 而不是活动模型来使用 Rails 3 1 身份验证 class User include Mongoid Document include ActiveModel SecurePassword has sec
  • 在哪里可以找到 Oracle JVM 的默认 -Xss(堆栈大小)值?

    有没有人找到过列出默认值的单个 JVM 文档 Xss不同版本的 Oracle JVM 和不同操作系统的值 我已经能够在中找到这张表jrockit 文档 http download oracle com docs cd E13150 01 j
  • 单例组件不能依赖于作用域组件

    在工作的同时Android应用程序使用Dagger2用于定义时的依赖注入Dagger组件我收到此错误 Error 13 1 error This Singleton component cannot depend on scoped com
  • 实现 copy.deepcopy() 克隆函数

    仅用于教育目的 我正在尝试实现一个克隆功能copy deepcopy 经过一些有趣的代码玩弄和谷歌搜索后 我想出了以下函数 def my deepcopy data if isinstance data dict result for ke
  • 为什么里氏代换原理需要论证是逆变的?

    其中一项规则是里氏替换原则 https en wikipedia org wiki Liskov substitution principle施加在派生类中的方法签名是 子类型中方法参数的逆变 如果我理解正确的话 就是说派生类的重写函数应该
  • 如何设置JQGRID ROW背景颜色?

    我想根据条件设置 JQGRID 行 bgcolor 怎么做 我正在使用 php 提前致谢 look at jqGrid 根据单元格值对网格中的整行进行着色 https stackoverflow com questions 2931732
  • 使用 REST API 将测试结果与测试用例链接起来

    我们使用 cypress 为 Web 应用程序实现了 UI 测试 并且它们在 Azure DevOps 中的发布管道上执行 我们需要将 ui 测试和测试结果与测试计划中定义的测试用例链接起来 为了将 ui 测试与测试用例链接起来 我们使用
  • 什么是MySQL排序规则,如何在实践中使用它?

    假设我想用 4 种语言用一些奇怪的语言制作一个搜索引擎 英语 瑞典 希伯来语 阿拉伯 我如何在 MySQL 中设置排序规则 排序规则定义 用于存储字符的字符集 UTF 8 ISO 8859等 排序和呈现规则 如果您想要不同的语言 正如您提到
  • DXF文件块中的polyLines顶点和点之间有什么关系?

    DXF文件块中的折线和点之间有什么关系 如果我提供档差表文件 如何连接它们 另一个问题 缩放点太少 所以效果不好 如下图所示 作为第一种答案 如果缩放点太少 是否需要在两个已知缩放点形成的圆弧上生成新的缩放点 不存在这样的关系 DXF 格式
  • try catch和finally块的执行顺序

    我对 try catch 和 finally 块执行的顺序感到困惑 我还想知道什么时候应该使用try catch块以及应该在try catch块中放入什么 我还想知道 try 块中是否出现了一些异常 那么如果采取了与 try 块相对应的操作
  • 对多个Mysql语句进行分组以获取多个状态的计数[重复]

    这个问题在这里已经有答案了 目前 我正在使用 Mysql 和 CodeIgniter 在特定时间范围内从数据库中获取条目 每个条目在数据库中的状态为 D N Y 现在 为了显示此数据 我对每个状态都有一个不同的语句 我想将其分组为 1 个语