我正在使用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-30
和2013-05-31
与其日期对帐)并显示第二次对帐(即对帐)使用2013-08-30
和2013-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>';
}
这仍然无法按预期工作,为不同的对帐期间提供相同的值。我想我做错了什么,如果有人能帮我解决,我将不胜感激。感谢
答案 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 |