Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按日期和余额排序银行变动_Php_Mysql_Sql_Laravel - Fatal编程技术网

Php 按日期和余额排序银行变动

Php 按日期和余额排序银行变动,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我有一个表,其中包含银行的变动,我从csv和json文件中导入这些变动,每个变动旁边都有一个金额和余额 +------------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------

我有一个表,其中包含银行的变动,我从csv和json文件中导入这些变动,每个变动旁边都有一个金额和余额

+------------------+------------------+------+-----+---------+----------------+
| Field            | Type             | Null | Key | Default | Extra          |
+------------------+------------------+------+-----+---------+----------------+
| id               | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| cuenta_banco_id  | int(11)          | NO   |     | NULL    |                |
| referencia       | varchar(191)     | NO   |     | NULL    |                |
| monto            | decimal(10,2)    | NO   |     | NULL    |                |
| saldo            | decimal(10,2)    | NO   |     | NULL    |                |
| type             | int(11)          | NO   |     | NULL    |                |
| user_id          | int(11)          | NO   |     | NULL    |                |
| fecha_movimiento | datetime         | NO   |     | NULL    |                |
| created_at       | timestamp        | YES  |     | NULL    |                |
| updated_at       | timestamp        | YES  |     | NULL    |                |
+------------------+------------------+------+-----+---------+----------------+
10 rows in set (0.08 sec)

{
    "Date": "22/04/2019",
    "Operation": "MC",
    "Reference": "15",
    "Description": "TRANSF. VIA INTERNET          ",
    "Amount": "10000.00",
    "Balance": "1869255.04"
  }
该文件将完全导入数据库,问题是在显示数据时需要对其进行正确排序

我需要按日期降序显示移动,但也需要正确显示余额

我需要的一个例子:

这就是我获得动作的方式:

+------+-----------------+-------------+------------+-----------+------+---------+---------------------+---------------------+---------------------+
| id   | cuenta_banco_id | referencia  | monto      | saldo     | type | user_id | fecha_movimiento    | created_at          | updated_at          |
+------+-----------------+-------------+------------+-----------+------+---------+---------------------+---------------------+---------------------+
| 3367 |               4 | 2297353555  |   10000.00 | 665445.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:33 | 2019-04-20 18:15:33 |
| 3366 |               4 | 2297322435  |   11000.00 | 655445.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:33 | 2019-04-20 18:15:33 |
| 3398 |               4 | 2297751229  |   11000.00 | 651695.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:34 | 2019-04-20 18:15:34 |
| 3362 |               4 | 2297311718  |   12000.00 | 651445.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:33 | 2019-04-20 18:15:33 |
| 3343 |               4 | 2296877327  |   10000.00 | 649845.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:33 | 2019-04-20 18:15:33 |
| 3365 |               4 | 2297317974  | -525000.00 | 644445.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:33 | 2019-04-20 18:15:33 |
| 3431 |               4 | 2298293430  |   13000.00 | 643195.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:35 | 2019-04-20 18:15:35 |
| 3397 |               4 | 2297748073  |   15900.00 | 640695.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:34 | 2019-04-20 18:15:34 |
| 3342 |               4 | 2296823905  |   30000.00 | 639845.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:33 | 2019-04-20 18:15:33 |
| 3361 |               4 | 64665863950 |  500000.00 | 639445.90 |    0 |       1 | 2019-04-20 23:59:59 | 2019-04-20 18:15:33 | 2019-04-20 18:15:33 |
+------+-----------------+-------------+------------+-----------+------+---------+---------------------+---------------------+---------------------+
10 rows in set (0.00 sec)
cuenta_banco_id字段标识拥有这些变动的银行,但不同银行的变动之间没有关系

这是在Laravel 5.7和MySQL 5.7.23上,我使用的查询是:

$movimientos = Movimiento::query();
$movimientos->where('cuenta_banco_id', $request->banco);
$movimientos->whereBetween(DB::raw('date(fecha_movimiento)'), [$start->startOfDay()->format('Y-m-d H:i:s'), $end->endOfDay()->format('Y-m-d H:i:s')]);
$movimientos->with('recargas', 'banks', 'recargas.transactions', 'movimientos_detalles', 'recargas.transactions.siteuser');
$movimientos->orderBy('created_at', 'DESC');
$movimientos = $movimientos->paginate(50);

如何实现我的需求?

据我所知,您的交易完全是基于时间(即,交易日期描述,然后创建时间ASC)排序的。而且,由于您在银行ID上使用where子句,因此我们只查看一家银行的交易(我不清楚它是否涵盖所有用户的交易。如果是这样,我们需要在应用order by之前按用户进行分区)。假设“fecha_moviminto”捕获交易日期,“id”捕获交易顺序,您可以尝试以下操作:

$movimientos->orderBy(DB::raw('date(fecha_movimiento)'), 'DESC')
            ->orderBy('id','ASC');

图片不清楚。你能添加文本来定义你的输出和预期输出而不是图像吗?@sabharikarthik我当然可以,给我一个minute@sabharikarthik抱歉,但我无法从银行网站上复制。我添加了一个不同的screenshot@sabharikarthik还添加了sqlThank的当前输出。我补充了一个答案。试试看,让我们知道这是否适用于您的案例。谢谢,它似乎部分有效。问题是,在这些变动中,有向外转移到其他账户的款项,因此余额可以是1.000.000,接下来是30万,这让我很头疼。我如何计算账户中的当前余额?我尝试过使用sum,因为我有正数和负数,但结果与账户上的实际余额相差很大。哦…好的…这是从任何账户到任何其他账户的所有交易的表吗?如果是这样,您是否可以将上述情况添加到输入和预期输出部分。因为,这将比COVA在评论中表达得更清楚。对于余额部分,您可以使用SUM(CASE…),但暂时不使用它。让我们先总结一下。哈哈,我现在肯定要添加它,谢谢你的帮助。很抱歉再次编辑,因为上次编辑显示了错误的余额格式。