sql >> Databáze >  >> RDS >> Mysql

Hodnota předchozího řádku, která se má načíst

Jednou z možností by bylo provést vlastní připojení pomocí payment tabulky, spojující se s customer_id a order_id sloupců. Můžete přidat další volání funkce spojení a poté použít výsledek ve výběru. Následující řešení používá nezpracovaný dotaz, protože se zdá, že Codeigniter netoleruje aritmetiku v podmínce spojení:

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();
}

Dotaz má tvar:

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


  1. Najděte minimální nepoužitou hodnotu z kolekce řádků označených id a customId

  2. Proč je mysqldump s jednou transakcí konzistentnější než bez?

  3. MySQL:Získejte n-tou nejvyšší hodnotu pro každou skupinu v tabulce

  4. Nelze se připojit k místnímu serveru MySQL přes socket homebrew