0

呼び出された 1 つのテーブルは18_7_ChartOfAccounts次のようになります。

ID | AccountNumber
-------------
1  | 2310
2  | 2380
3  | 2610

呼び出された別のテーブルは2_1_journal次のようになります。

ID | Amount | DebitAccount
--------------------------
1  | 26.03  | 2310
2  | 200.00 | 2310
3  | 3.63   | 2380
4  | 119.83 | 2380
5  | 33.86  | 2610
6  | 428.25 | 2610

目的は、次のような結果を得ることです。

DebitAccount 2310 total is: 226.03
DebitAccount 2380 total is: 123.46
DebitAccount 2310 total is: 462.11

この例の 226.03 は、26.03 + 200.00 の合計です。

最初のmysqlコード

$query = "SELECT j.Amount, j.DebitAccount FROM 18_7_ChartOfAccounts AS c LEFT JOIN 2_1_journal AS j ON (c.AccountNumber = j.DebitAccount)";
$sql = $db->prepare($query);
$sql->execute();
$data = $sql->fetchAll(PDO::FETCH_ASSOC);

print_r($data);次のような配列の長いリストを取得します

[31] => Array
    (
        [Amount] => 26.03
        [DebitAccount] => 2310

[32] => Array
    (
        [Amount] => 200.00
        [DebitAccount] => 2310

mysql クエリで使用する場合は、SUM(j.Amount)合計金額を 1 つだけ取得します (合計金額を列と仮定しますAmount)。

foreach($data as $result){
if(strlen($result['Amount']) > 0 ) {
echo "Amount ". $result['Amount']. "Account name ". $result['DebitAccount']. "<br>";
print_r (array_sum($result));
}
}

このようなものを入手してください

Amount 123.97Account name 2310
2433.97Amount 26.03Account name 2310
2336.03Amount 200.00Account name 2310

必要な結果を得る方法はありますか (太字でマーク)。

アップデート

$クエリをに変更

$query = "SELECT SUM(j.Amount), j.DebitAccount FROM 18_7_ChartOfAccounts AS c LEFT JOIN 2_1_journal AS j ON (c.AccountNumber = j.DebitAccount) group by j.DebitAccount";

print_r($data);このように配列を取得します

Array
(
[0] => Array
    (
        [SUM(j.Amount)] => 
        [DebitAccount] => 
    )

[1] => Array
    (
        [SUM(j.Amount)] => 110900.16
        [DebitAccount] => 2310
    )

[2] => Array
    (
        [SUM(j.Amount)] => 3660.86
        [DebitAccount] => 2380
    )

配列を使用すると、すべて動作するようです。foreach が次のように変更されました echo "Amount ". $result['SUM(j.Amount)']. " Account name ". $result['DebitAccount']. "<br>";

得る

Amount 110900.16 Account name 2310
Amount 3660.86 Account name 2380
Amount 85247.40 Account name 2610

も大丈夫そうです。ありがとう

4

3 に答える 3

4

あなたはそれについて間違っています。MySql ステートメント自体から合計を取得できます。

group by 句とともに集計関数 sum を使用します。

このような、

SELECT DebitAccount,sum(Account) from  2_1_journal group by DebitAccount

完全なコード:

$query = " SELECT DebitAccount,sum(Account) as Total from  2_1_journal group by DebitAccount";
$sql = $db->prepare($query);
$sql->execute();
$data = $sql->fetchAll(PDO::FETCH_ASSOC);
foreach($data as $result){
if(strlen($result['Total']) > 0 ) {
echo "DebitAccount ". $result['DebitAccount']. "Total is: ". $result['Total']. "<br>";
print_r (array_sum($result));
}
}
于 2013-06-30T14:53:32.500 に答える
2
SELECT DebitAccount, SUM(Amount) 
FROM 2_1_journal 
GROUP BY DebitAccount
于 2013-06-30T14:52:38.377 に答える
2

GROUP BYクエリでを使用する必要があります

SELECT DebitAccount, SUM(Amount) AS Amount FROM 2_1_journal GROUP BY DebitAccount
于 2013-06-30T14:54:55.823 に答える