-- Table structure for table 'members'
CREATE TABLE `members` (
`mID` INTEGER NOT NULL AUTO_INCREMENT,
`fname` VARCHAR(50),
`lname` VARCHAR(50),
`status` VARCHAR(20),
`dateregistered` VARCHAR(255),
INDEX (`lname`),
PRIMARY KEY (`mID`)
) ENGINE=myisam DEFAULT CHARSET=utf8;
-- Table structure for table 'payments'
CREATE TABLE `payments` (
`paymentsID` INTEGER NOT NULL AUTO_INCREMENT,
`amount` INTEGER,
`type` VARCHAR(255),
`officer` VARCHAR(255),
`dayentered` DATETIME,
`mID` INTEGER,
INDEX (`mID`),
PRIMARY KEY (`paymentsID`)
) ENGINE=myisam DEFAULT CHARSET=utf8;
我的数据库中有以上两个表。数据库保 stub 据账户类型(水电费、建筑项目等)分类的捐赠信息,成员(member)直接向他们选择的特定账户捐款(他们可以向一个账户或所有账户或任意数量的账户捐款).
数据库在 MS Access 中运行良好,但现在我必须将其迁移到 MySQL 和 PHP,这就是我的问题所在。我无法想出代码来列出成员的姓名,并为每个成员显示每个帐户每月的捐赠总额以及全年的总计。
请帮忙写代码。谢谢。
最佳答案
不像纯 SQL 解决方案那样快速/高效,但这可以完成工作。
$query = "
SELECT
`members`.`mID`,
`members`.`fname`,
`members`.`lname`,
`payments`.`amount`,
`payments`.`type`,
`payments`.`dayentered`
FROM `members` JOIN `payments`
ON `members`.`mID` = `payments`.`mID`";
$result = mysqli($link, $query);
$results = array();
while($row=mysqli_fetch_assoc($result)) {
$mID = $row['mID'];
$type = $row['type'];
$amount = (int) $row['amount'];
$date = $row['dayentered'];
$year = date('Y', strtotime($date));
if(!array_key_exists($mid, $results))
$results[$mid] = array($row['fname'], $row['lname']);
if(!array_key_exists($date, $results[$mid]))
$results[$mid][$date] = array();
if(!array_key_exists($type, $results[$mid][$date]))
$results[$mid][$date][$type] = $amount;
else
$results[$mid][$date][$type] += $amount;
if(!array_key_exists($year, $results[$mid]))
$results[$mid][$year] = $amount;
else
$results[$mid][$year] += $amount;
}
关于php - 多个账户的捐款总和(变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203259/