Một tùy chọn ở đây là tự tham gia với payment
bảng, tham gia trên customer_id
và order_id
cột. Bạn có thể thêm một lệnh gọi hàm tham gia khác và sau đó sử dụng kết quả trong lựa chọn của bạn. Giải pháp sau sử dụng một truy vấn thô vì Codeigniter dường như không chấp nhận số học trong điều kiện kết hợp:
public function order_balance($order_code)
{
$this->db->query("SELECT p1.*, p2.balance AS previous_balance FROM payment p1 INNER JOIN payment p2 ON p1.order_id = p2.order_id + 1 AND p1.customer_id = p2.customer_id LEFT JOIN services s ON p1.customer_id = s.customer_id ORDER BY p1.id DESC");
$query = $this->db->get_where('p1', array('code' => $order_code));
return $query->previous_row();
}
Truy vấn có dạng:
SELECT p1.*, p2.balance AS previous_balance
FROM payment p1 INNER JOIN payment p2
ON p1.order_id = p2.order_id + 1 AND
p1.customer_id = p2.customer_id
LEFT JOIN services s
ON p1.customer_id = s.customer_id
ORDER BY p1.id DESC