【发布时间】:2016-12-29 00:57:15
【问题描述】:
我有一个数据库,我正在提取以下字段:
BookDate -- AirlineCode -- BkngVal
我要做的就是将输出保存为以下格式的 json 文件:
[{
Date: 2016-01-03,
Airline Code: BA,
Airline BkngVal: 1234.00,
Airline Code: VS,
Airline BkngVal: 123.00,
Airline Code: EK,
Airline BkngVal: 8743.09
},
{
Date: 2016-01-04
Airline Code: UA,
Airline BkngVal: 134.00,
Airline Code: BA,
Airline BkngVal: 129.00,
Airline Code: 9W,
Airline BkngVal: 823.09
}]
对于数据库中的每个日期,依此类推。问题是在同一天为每家航空公司进行了多次预订,所以我试图了解对日期进行分组的最佳方式,然后将预订 val 添加到使用该日期的每家航空公司,然后添加将其放入以日期为主键的 json 文件中。
最初的MySql查询是:
$stmt = $db->prepare('SELECT BookDate, BkngVal, Market, AirlineCode
FROM sales
WHERE (Market = :market)
AND (BookDate >= :startDate)
AND (BookDate <= :endDate)
ORDER BY BookDate ASC');
$stmt->execute(array(
'market' => $location,
'startDate' => $start,
'endDate' => $end
));
市场是我想研究的国家,所以假设它是英国。所以我正在查看在英国预订的所有航班。
如何循环遍历这些并将 val 添加到航空公司,然后将其添加到 json 文件中。
while ($row = $stmt->fetch()) {
if ($row['BookDate'] == $BookDate) {
$airline_sales_made_per_day += $row['BkngVal'];
}
else {
if ($count > 0) {
$data[] = array(
'date' => $BookDate,
'airline sales made per day' => $airline_sales_made_per_day
);
}
$count++;
}
}
我知道这不会起作用,因为它所做的只是创建具有多个航空公司预订和值的多个日期,因此基本上将查询变成一个数组。
我只是想不出该怎么做。
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
我承认在 json 方面我有点新手,但对我来说这看起来不像是格式良好的 json。
-
按航空公司代码作为 ORDER BY 子句中的第二个字段对其进行排序。然后在您的数据库行循环中继续添加总数,直到当前行的航空公司代码与前一个不同。此时将其写入数组,然后重复该过程,直到到达下一个日期。
-
@strawberry - 是的,格式错误,但这只是我想要的一个例子。
-
@ADyson 我试试看,谢谢。
-
@ADyson 谢谢你的工作