2 つのテーブルからのシェア パーセンテージ計算の集計結果を返したいのですが、これを行う方法がわかりません。私のテーブルは次のとおりです。
テーブルパ
---+-----------+---------+-----------+---------+-----------+---------+----------+
id | product_1 | share_1 | product_2 | share_2 | product_3 | share_3 | amount |
---+-----------+---------+-----------+---------+-----------+---------+----------+
1 | 3 | 50 | 2 | 50 | | | 5000 |
2 | 2 | 50 | 1 | 25 | 4 | 25 | 10000 |
3 | 5 | 50 | 4 | 50 | | | 7000 |
---+-----------+---------+-----------+---------+-----------+---------+----------+
テーブル製品
---+-----------+
id | name |
---+-----------+
1 | Book |
2 | Pen |
3 | Ruler |
4 | Pencil |
5 | Calendar |
---+-----------+
私は結果が次のように出てくることを望みます:
Product_name | Total
-------------+----------
Book | 2500
Pen | 7500
Ruler | 2500
Pencil | 6000
Calendar | 3500
-------------+----------
Grand Total | 22000
これまでのところ、私はこのクエリを試しました
$this->db->select('t1.name as product_name, sum(t2.amount) as total');
$this->db->from('products t1');
$this->db->join('pa t2', 't2.product_1 = t1.id OR t2.product_2 = t1.id OR t2.product_3 = t1.id', 'left');
$this->db->group_by('t1.name');
$query = $this->db->get();
SQL フィドル: http://sqlfiddle.com/#!2/471c4/1
しかし、各製品のシェア率の計算がないため、必要な結果が返されません。
SQLクエリのみで必要な結果を返す方法はありますか? または、PHP で再帰的に計算を行う必要がありますか?