[英]Group results returned from MySQL query
我正在查詢由前雇員建立的數據庫,很糟糕! 我已經成功收集並輸出了我需要的所有數據-但是我想將數據分組為發行編號。
目前的輸出是這樣的...
Company 1
Issue number: 142
Total: 480.00
Company 2
Issue number: 142
Total: 46
Company 3
Issue number: 142
Total: 240.00
Company 4
Issue number: 142
Total: 420.00
Company 5
Issue number: 142
Total: 468.00
Company 6
Issue number: 142
Total: 252.00
我希望它讀起來像……
**Issue number: 142**
Company 1 Total 480
Company 2 Total 468
etc etc I.e grouping them into issue numbers.
這是我的代碼...
$sql = "
SELECT bf_total_cost
, bf_date_added
, ib_issue_number
, companyname
, contacts_id
, bf_id
, bf_company_id
, ib_booking_form_number
FROM contacts
, booking_form
, issues_booked
WHERE ib_issue_number >= 141
AND ib_issue_number <= 165
AND bf_date_added >= '2014-11-01'
AND bf_date_added <= '2016-08-31'
AND contacts_id = bf_company_id
AND bf_id = ib_booking_form_number
ORDER
BY ib_issue_number ASC;
";
$result = mysql_query($sql) or die (mysql_error());
$row = mysql_fetch_array($result) or die (mysql_error());
while($row = mysql_fetch_array($result)) {
echo '<ul>';
echo '<li>'.$row['companyname'] .'</li>';
echo '<li>'.$row['ib_issue_number'] .'</li>';
echo '<li>'.$row['bf_total_cost'] .'</li>';
echo '</ul>';
}
在MySQL中使用聚合:
SELECT sum(bf_total_cost) ... GROUP BY ib_issue_number, bf_company_id
這將按發行編號和公司ID將每一行分組。 然后sum()將返回每個分組的總成本。
如果您只想按發行號分組,請從“分組依據”中刪除bf_company_id。
您可以在從結果中獲取行的while
,在while
循環中創建嵌套/分組數組:
$result = mysql_query($sql) or die (mysql_error());
$groupedArray = array();
while($row = mysql_fetch_assoc($result)) {
$groupedArray[$row['ib_issue_number']][] = $row;
}
然后,您可以將其輸出為嵌套的HTML列表:
echo "<ul>";
foreach ($groupedArray as $issueNumber => $group) {
echo "<li>issue number: $issueNumber <ul>";
foreach ($group as $row) {
echo "<li>Company: {$row['companyname']}; Total {$row['bf_total_cost']}</li>";
}
echo "</ul></li>";
}
echo "</ul>";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.