Една опция тук би била да направите самостоятелно присъединяване с payment
таблица, присъединявайки се към customer_id
и order_id
колони. Можете да добавите друго извикване на функция за присъединяване и след това да използвате резултата във вашия избор. Следното решение използва необработена заявка, тъй като Codeigniter изглежда не толерира аритметика в условието за присъединяване:
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();
}
Заявката има формата:
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