我有一個簡單的問題,但我是SQL新手,請原諒我的無知。簡單的mySQL子查詢
我有一份會計報告,計算出欠款餘額並累計餘額,以向我報告特定期間內的未償還總額。問題在於,每個作業都有許多發票可以提供運行總量/餘額,因爲這個時候,當我的當前查詢累計餘額時,它顯示餘額非常高,我們發現當前代碼正在添加餘額的所有發票。 例 - 如果作業ID 001有四個invoices- I-001平衡200, I-002平衡100, I-003天平50, I-004的平衡0
它會告訴我,有實際上它爲零時是未完成的350美元。
,我能想到的(這我不知道如何編寫代碼)是組的結果通過作業ID,並使用MAX功能,只選擇higest ID爲每JOBID
的問題,我的解決辦法我的觀點是餘額不會保存到桌面,而是每次需要時重新計算。你可以建議什麼給我只能從最高的發票ID平衡特定JOBID 我的發票表有以下幾列:
1 ID int(11)
2 ParentID int(11)
3 JOBID varchar(100)
4 DATE date
5 LENSES decimal(10,2)
6 FRAMES decimal(10,2)
7 TAXABLEGOODS decimal(10,2)
8 DISCOUNT decimal(10,2)
9 PREVIOUSBALANCE decimal(10,2)
10 PAYMENT decimal(10,2)
11 PAYMENTTYPE varchar(200)
12 NOTES varchar(255)
13 PMA decimal(10,2)
當前的代碼看起來是這樣的:
$pieces = explode("-", $_REQUEST["STARTDATE"]);
$startDate=$pieces[2] . "-" . $pieces[1] . "-" . $pieces[0];
if($_REQUEST["ENDDATE"]==""){
$endDate=0;
}else{
$pieces = explode("-", $_REQUEST["ENDDATE"]);
$endDate = $pieces[2] . "-" . $pieces[1] . "-" . $pieces[0];
}
$result = mysql_query("SELECT * FROM INVOICES WHERE DATE BETWEEN '" . $startDate . "' AND '" . $endDate . "'");
$totalCount = 0;
$total = 0;
$allPayments= 0;
$pmtTypes = Array();
$totalHST = 0;
$outstanding=0;
$payments=0;
while($theRow=mysql_fetch_array($result)){
$allPayments += $theRow["PAYMENT"];
if($theRow["PAYMENTTYPE"] == "") $theRow["PAYMENTTYPE"] = "BLANK";
if(isset($pmtTypes[$theRow["PAYMENTTYPE"]])){
$pmtTypes[$theRow["PAYMENTTYPE"]] += $theRow["PAYMENT"];;
}else{
$pmtTypes[$theRow["PAYMENTTYPE"]] = $theRow["PAYMENT"];;
}
if($theRow["PREVIOUSBALANCE"] != 0) continue;
$subTotal = (($theRow["LENSES"] + $theRow["FRAMES"] + $theRow["TAXABLEGOODS"]) - $theRow["DISCOUNT"]);
$HST = ($theRow["TAXABLEGOODS"] * 0.13);
$totalHST+= $HST;
$total += ($subTotal + $HST);
$payments+=$theRow["PAYMENT"];
}
$outstanding=$total-$payments;
任何人有什麼可以貢獻的? 我將不勝感激任何幫助。
您可以在您的php代碼中使用一些縮進來提高可讀性 – abcde123483
謝謝,當我得到它的工作時,我會花一些時間清理外觀。任何關於解決問題的想法? – user1052646