У меня есть такие таблицы,
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?
Вы можете использовать ниже в своей функции и изменить "выборку" и "продажу" по мере необходимости:
$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 ");
См. Ниже вывод запроса:
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(); }