我有两张桌子。
我的问题是如何从 pre_order表获取所有信息,并获取 receive_pre_order表收到的所有数量的 SUM pre_order id
。
为清楚起见,假设我们在 recieve_pre_order 中有以下数据。
+--------------+------------+-------------------+
| pre_order_id | product_id | quantity_recieved |
+--------------+------------+-------------------+
| 1 | 1 | 10 |
| 1 | 1 | 20 |
| 1 | 1 | 10 |
+--------------+------------+-------------------+
它应该针对quantity_recieved = 40
返回pre_order_id 1
。
现在我尝试过:
$this->db->select_sum('quantity_recieved');
$this->db->from('recieve_pre_order');
return $this->db->get();
它正在工作,但它从一张表中获取数据 但我想从两个表中获取数据。
答案 0 :(得分:1)
加入两个表格表(rpo.pre_order_id = po.id
)。将结果分组为po.id
,因此具有相同po.id
的所有行将分组为一行。 sum(rpo.quantity_recieved)
将总结这些群体的数量。
select po.id, sum(rpo.quantity_recieved)
from receive_pre_order rpo
join pre_order po on rpo.pre_order_id = po.id
group by po.id;
答案 1 :(得分:1)
试试这个
$this->db->select("sum(recieve_pre_order.quantity_recieved),pre_order.id");
$this->db->from('recieve_pre_order');
$this->db->join("pre_order",'recieve_pre_order.pre_order_id = pre_order.id','left outer');
$this->db->where('recieve_pre_order.pre_order_id',your parameter);
答案 2 :(得分:0)
const apply = f => typeof f === "function" ? f() : null;
const Switch = (input, ...entries) => apply(new Map(entries).get(input));
const types = {
INCREMENT: "INCREMENT",
DECREMENT: "DECREMENT",
SQUARE: "SQUARE"
};
const myNumberReducer = function(state = { myNumber: 0 }, action = {}) {
return Object.assign({}, state, Switch(action.type,
[ types.INCREMENT, () => ({ myNumber: state.myNumber + 1 }) ],
[ types.DECREMENT, () => ({ myNumber: state.myNumber - 1 }) ],
[ types.SQUARE, () => ({ myNumber: state.myNumber * state.myNumber }) ]
));
}
let lastState = myNumberReducer();
console.log(lastState); // myNumber: 0
lastState = myNumberReducer(lastState, { type: types.INCREMENT });
console.log(lastState); // myNumber: 1
lastState = myNumberReducer(lastState, { type: types.INCREMENT });
lastState = myNumberReducer(lastState, { type: types.SQUARE });
console.log(lastState); // myNumber: 4
答案 3 :(得分:0)
尝试子查询而不是连接表。
$this->db->select("po.*,SELECT(SUM(quantity_recieved) from receive_pre_order where pre_order_id = po.id) as total_recieved_quantity",FALSE);
$this->db->from('pre_order as po');
return $this->db->get();