codeigniter:按数据类别获取多个表中的百分比

Posted

技术标签:

【中文标题】codeigniter:按数据类别获取多个表中的百分比【英文标题】:codeigniter: get percentage in multiple table by data category 【发布时间】:2019-01-25 06:09:40 【问题描述】:

我有这样的桌子,

table_a

PID  Name   Type
1    a      selling
2    b      sampling
3    c      selling
4    d      sampling
5    e      selling

还有,

table_b

ID      PID   Qty
1       2     3
2       2     2
3       1     1
4       3     1
5       1     3
6       5     3
7       4     3
8       3     2

我需要这样展示,

output_selling

Name           Total_qty     Percentage
a              4             40%
c              3             30%
e              3             30%

还有,

output_sampling

Name           Total_qty     Percentage
b              5             62,5%
d              3             37,5%

我将如何在 CodeIgniter 中解决这个问题?

【问题讨论】:

function output_selling() $total = $this->db->select('SUM(table_b.Qty) as Total_qty', FALSE); $this->db->select('((sum(table_b.Qty)/'.$total.',0)*100 )as percentage', FALSE); $this->db->from('table_b'); $this->db->join('table_a', 'table_a.PID= table_b.PID', 'left'); $this->db->where('table_a.Type', "selling"); $this->db->group_by('table_b.PID'); $query = $this->db->get(); return $query->result(); 【参考方案1】:

您可以在您的函数中使用下面的内容,并根据需要更改“采样”和“销售”:

$this->db->query("
SELECT dd.NAME, 
       dd.total_qty, 
       ( dd.total_qty / dd.totals ) * 100 AS Percentage 
FROM   (SELECT a.NAME, 
               Sum(b.qty)                            AS Total_qty, 
               (SELECT Sum(b1.qty) AS total 
                FROM   table_b b1 
                       JOIN table_a a1 
                         ON a1.pid = b1.pid 
                            AND a1.type = 'selling') AS totals 
        FROM   table_a a 
               JOIN table_b b 
                 ON b.pid = a.pid 
                    AND a.type = 'selling' 
        GROUP  BY a.pid) dd ");

请看下面的查询输出:

【讨论】:

以上是关于codeigniter:按数据类别获取多个表中的百分比的主要内容,如果未能解决你的问题,请参考以下文章

按 ID 获取数据详细信息 - CODEIGNITER

codeigniter php 和 jquery - 如何从多个表中获取数据并通过 ajax 返回

如何使用codeigniter从mysql中获取多个多维数组中的数据?

如何使用 CodeIgniter 3 中的外键从表中获取列数据

无法从codeigniter中的mysql表中获取一些特殊字符

从 Codeigniter 中的同一个表单注册中获取数据