sql >> データベース >  >> RDS >> Mysql

フェッチされる前の行の値

    ここでの1つのオプションは、paymentを使用して自己参加することです。 テーブル、customer_idに参加 およびorder_id 列。別のjoin関数呼び出しを追加して、その結果を選択に使用できます。 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
    


    1. 文字列にSQLでアクセント付き文字が含まれているかどうかを確認しますか?

    2. テーブルステータスを表示し、テーブル内の正確な行を表示しますか?

    3. Oracle 10gのピボット/クロス集計クエリ(動的列番号)

    4. MySQLLEFTJOINは結果を複製します