使用php和mysql处理银行对帐

时间:2015-01-15 12:03:25

标签: php html mysql

我正在使用mysql和php处理银行对帐, 我有两家银行,其中记录了利息和费用 下面显示表格

Banks table
| BankID    |   BankName    |
|  01       |       AB Bank |
|  02       |       CD Bank |

用户可以自由添加更多银行到Banks table

以下是对帐表格,此表格每两个月从银行收到各种值

reconcilation table
|   BankID  |   interest    |   Charges     |   Date        | Year  |
|     01    |       20.00   |       10.00   |   2013-05-30  | 2013  |
|     02    |       0.00    |       0.00    |   2013-05-31  | 2013  |
|     01    |       0.20    |       0.00    |   2013-08-27  | 2013  |
|     02    |       50.00   |       0.00    |   2013-08-30  | 2013  |

我希望能够在一张桌子上显示第一次对帐(即2013-05-302013-05-31与其日期对帐)并显示第二次对帐(即对帐)使用2013-08-302013-08-27作为日期),在同一页面上使用一个查询,在不同的表上使用两个银行。 reconcilation table通常在一年内每两到三个月更新一次。

这列表如下。例如,在我们显示的一个php页面上

  ANALYSIS OF BANK ACCOUNTS (2013/05/01 to 2013/05/31)

| Date      |   Details     |   AB Bank     |   CD Bank |
|2013/05/01 |   Interest    |   20.00       |   0.00    |
|           |   Charges     |   10.00       |   0.00    |




 ANALYSIS OF BANK ACCOUNTS (2013/06/01 to 2013/09/31)

| Date      |   Details     |   AB Bank     |   CD Bank |
|2013-06-01 |   Interest    |   0.20        |   50.00   |
|           |   Charges     |   0.00        |   0.00    |

注意:用户可以在Banks table中添加更多银行,这会影响reconciliation table值。

更新

这是我到目前为止所尝试的

/**
 * This queries the various components for the various
 * banks within a particular period
 */ 
$bankAccount1= "SELECT
                    a.bankID,
                    a.interest,
                    a.charges,
                    a.date
                FROM 
                    `Bank Reconciliation` a 
                    group by bankID";

$bankResult1=$db->query($bankAccount1);

while($bankRow1=mysqli_fetch_assoc($bankResult1)){
    $bankID=$bankRow1['bankID'];
    $interest=$bankRow1['interest'];
    $tableHead .='<th>'.$bankID.'</th>';
    $bankInterest .='<td>'.$interest.'</td>';
    $bankCharges .='<td>'.$charges.'</td>';
}




/**
 * This query is suppose to list the number
 * of reconciliation that has been done within one 
 * period.
 */
$bankAccount2= "SELECT
                    a.bankID,
                    a.date
                FROM 
                    `Bank Reconciliation` a 
                group by date";

while($bankRow2=mysqli_fetch_assoc($bankResult2)){
        $bankName=$bankRow2['bankID'];
        $date=$bankRow2['date'];

        echo'
            <table>
                <thead>
                    <tr>
                        <th>Date </th>
                        <th>Details</th>
                        '.$tableHead.'
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>'.$date.'</td>
                        <td>Interest</td>
                        '.$bankInterest.'
                    </tr>
                    <tr>
                        <td>'.$date.'</td>
                        <td>Charge</td>
                        '.$bankCharges.'
                    </tr>
                </tbody>
            </table>';
}

这仍然无法按预期工作,为不同的对帐期间提供相同的值。我想我做错了什么,如果有人能帮我解决,我将不胜感激。感谢

2 个答案:

答案 0 :(得分:0)

SELECT b.bankname
     , LAST_DAY(r.date) date
     , SUM(r.Interest) Interest
     , SUM(r.Charges) Charges 
  FROM reconciliation r 
  JOIN banks b 
    ON b.bankid = r.bankid 
 GROUP 
    BY r.bankid
     , LAST_DAY(r.date)

答案 1 :(得分:0)

这对我有帮助

reconciliation table
|   reID    |   ABinterest  |   ABcharge    |   CDinterest  |   CDcharges   |       DateRange           |   Year    |
|   1       |   20.00       |     10.00     |       0.00    |       0.00    |   2013/05/01 - 2013/06/31 |   2013    |
|   2       |   0.20        |      0.00     |       50.00   |       0.00    |   2013/07/01 - 2013/09/31 |   2013    |