我想建立一个分类帐报告页面
这是我的表结构..
CREATE TABLE IF NOT EXISTS `tran` (
`tran_no` int(10) NOT NULL COMMENT 'S.S.N.',
`date` varchar(100) NOT NULL,
`cid` int(11) NOT NULL,
`ref` varchar(100) NOT NULL,
`amt` varchar(100) NOT NULL,
`type` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `tran` (`tran_no`, `date`, `cid`, `ref`, `amt`, `type`) VALUES
(1, '2014/04/25', 1, '123', '35280', 'Sales'),
(2, '2014/04/25', 1, '124', '35280', 'Sales'),
(3, '2014/04/01', 3, '1236', '2000', 'Sales'),
(4, '2014/04/25', 1, '126', '35280', 'Sales'),
(5, '2014/04/25', 1, '127', '35280', 'Sales'),
(6, '2014/04/24', 1, '128', '50000', 'Sales'),
(7, '2014/04/24', 1, '131', '50000', 'Sales'),
(8, '2014/04/24', 1, '129', '12000', 'Sales'),
(9, '2014/04/24', 1, '130', '11000', 'Sales'),
(10, '2014/04/22', 2, '156', '50000', 'Sales'),
(12, '2014/04/23', 1, '130', '54321', 'Sales'),
(13, '2014/04/24', 2, '131', '54320', 'Sales'),
(14, '2014/04/27', 2, '132', '12345', 'Sales'),
(15, '2014/04/27', 2, '133', '55555', 'Sales'),
(16, '2014/04/08', 2, '1234', '30000', 'Receipt'),
(17, '2014/04/11', 2, '1235', '5000', 'Receipt'),
(18, '2014/04/01', 2, '1236', '2000', 'Receipt'),
(19, '2014/04/14', 2, '1237', '5000', 'Receipt'),
(20, '2014/04/20', 2, '134', '50000', 'Receipt'),
(21, '2014/04/28', 2, '111', '45455', 'Receipt'),
(22, '2014/04/28', 2, '112', '54545', 'Receipt'),
(23, '2014/05/01', 3, '1234', '55000', 'Sales'),
(24, '2014/05/02', 3, '113', '25000', 'Receipt');
还有另一个表,其中包含有未结余额的客户信息
CREATE TABLE IF NOT EXISTS `customer` (
`cid` int(3) NOT NULL AUTO_INCREMENT COMMENT 'Customer ID',
`cname` char(50) NOT NULL COMMENT 'Customer Name',
`cadd` char(50) NOT NULL COMMENT 'Address',
`cemail` char(50) NOT NULL COMMENT 'Email',
`cphone` char(15) NOT NULL COMMENT 'Phone',
`cperson` char(50) NOT NULL COMMENT 'Contact Person',
`cmob` char(15) NOT NULL COMMENT 'Mobile Number',
`cob` int(30) NOT NULL COMMENT 'Opening Balance',
PRIMARY KEY (`cid`),
KEY `cname` (`cname`,`cadd`,`cemail`,`cphone`,`cperson`,`cob`),
KEY `cperson` (`cperson`),
KEY `cmob` (`cmob`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `customer`
--
INSERT INTO `customer` (`cid`, `cname`, `cadd`, `cemail`, `cphone`, `cperson`, `cmob`, `cob`) VALUES
(1, 'CASH', 'N/A', '', 'n/a', 'CASH', '', 0),
(2, 'GURUDEV ENGINEERING', 'DHARMA CHOWK', '', '056527784', 'RAJAN KANDEL', '9845045093', 50000),
(3, 'ASIAN GENERAL', 'DHARMA CHOWK', 'n/a', '056530757', 'PADAM CHHETRI', '9845082712', 100000),
(4, 'KANDEL ELECTRIC', 'DHARMA CHOWK', 'n/a', '056526105', 'BHOJRAJ KANDEL', '9845077618', 55555);
对于CID-2的分类帐报告页面,我希望将其显示为 -
REPORT of CID-2
-------------------------------------------------
| date | ref | sales | receipt | balance |
|-----------+-------+-------+---------+---------+
|opening bal | | | 50000 |
|2014/04/01 | 1236 | | 2000 | 48000 |
|2014/04/08 | 1234 | | 30000 | 18000 |
|2014/04/11 | 1235 | | 5000 | 13000 |
|2014/04/14 | 1237 | | 5000 | 8000 |
|2014/04/20 | 134 | | 50000 | -42000 |
|2014/04/22 | 156 | 50000 | | 8000 |
|2014/04/24 | 131 | 54320 | | 62320 |
|2014/04/27 | 133 | 55555 | | 117875 |
|2014/04/27 | 132 | 12345 | | 130220 |
|2014/04/28 | 111 | | 45455 | 84765 |
|2014/04/28 | 112 | | 54545 | 30220 |
|-----------+-------+-------+---------+---------+
|closing balance | 172220| 192000 | 30220 |
-------------------------------------------------
我检索了所有列以及来自不同查询的第一行和最后一行,但无法获取余额列。我尝试了来自其他问题的不同建议的不同查询。来自STACKEXCHANGE的答案,但他们都没有给出我想要的结果..
请帮我解决这个问题....
提前感谢....
编辑:我做过的是 -
$result4 = mysqli_query($connect, "SELECT sum(samt), sum(ramt) FROM tran WHERE cid='$cid'") or die("Error: " . mysqli_error($connect));
$row4 = mysqli_fetch_array($result4);
$TotalSales = $row4['sum(samt)'];
$TotalReceipt = $row4['sum(ramt)'];
$balance = $ob + $TotalSales - $TotalReceipt;
echo "
<table border='1' cellpadding='6' style='font-size:14px' cellspacing='0'>
<tr bgcolor='#006699' align='center' style='font-weight:bold;'>
<td width='150px'>Date</td>
<td>Sales No.</td>";
if ($rs->cname!='CASH') { echo "<td width='150px'>Receipt No.</td>"; }
echo"
<td width='200px'>Sales</td>";
if ($rs->cname!='CASH') { echo "<td width='150px'>Receipt</td>"; }
echo"
</tr>";
// select tran
$sql = "SELECT * FROM tran WHERE cid = '$cid' ORDER BY date";
$result = mysqli_query($connect, $sql) or die("Error: " . mysqli_error($connect));
while($row = mysqli_fetch_array($result)) {
echo "
<tr bgcolor='#999911' align='center'>
<td>" . $row['date'] . "</td>
<td>";
if ($row['sref'] > 0) {
echo "<a href='salesedit.php?ssn=$row[ssn]' class=slink>" . $row['sref'];
} else {
echo " ";
}
echo "
</td>";
if ($rs->cname!='CASH') {
echo "<td>";
if ($row['rref'] > 0) {
echo "<a href='receiptedit.php?rsn=$row[rsn]' class='slink'>" . $row['rref'] . "</a>";
} else {
echo " ";
}
}
echo "</td>";
if ($row['samt'] > 0) {
echo "<td align='right'>Rs." . number_format(($row['samt']), 2, '.', ',') . "</td>";
} else {
echo "<td align='center'>-</td>";
}
if ($rs->cname!='CASH') {
if ($row['ramt'] > 0) {
echo "<td align='right'>Rs." . number_format(($row['ramt']), 2, '.', ',') . "</td>";
} else {
echo "<td align='center'>-</td>";
}
}
echo
"</td>
</tr>";
}
echo "
<tr bgcolor='#FFFFFF' align='center'>
<td>Total:</td>
<td>" . $n . " Sale(s)</td>";
if ($rs->cname!='CASH') { echo "<td>" . $n1 . " Receipt(s)</td>"; }
echo"
<td align='right'>Rs. " . number_format(($TotalSales), 2, '.', ',') . "</td>";
if ($rs->cname!='CASH') { echo "<td align='right'>Rs. " . number_format(($TotalReceipt), 2, '.', ',') . "</td>"; }
echo "
</tr>
</table>";