php - 数据库查询逻辑问题

标签 php mysql arrays json pdo

我有一个数据库,我正在提取以下字段:

预订日期 -- 航空公司代码 -- 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
}]

对于数据库中的每个日期依此类推。问题是,每个航空公司在同一天都有多个预订,因此我试图了解对日期进行分组的最佳方式,然后将预订值添加到使用该日期的每个航空公司中,然后添加将其写入 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++;
        }
    }

我知道这行不通,因为它所做的只是创建具有多个航空公司预订和值的多个日期,因此基本上将查询放入数组中。

我就是想不出该怎么做。

任何帮助将不胜感激。

谢谢

最佳答案

按航空公司代码作为 ORDER BY 子句中的第二个字段进行排序。然后在数据库行循环中不断添加总计,直到当前行的航空公司代码与前一行不同。然后将其写入数组,然后重复该过程,直到到达下一个日期。

关于php - 数据库查询逻辑问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39080123/

相关文章:

php - 使用 php 创建网站构建器

javascript - 使用 Ajax 返回 JQuery

mysql - 如何在 MySQL 中保存追加或删除查询

mysql - 获取 MySQL 查询的行号,然后过滤值之间的行号

php - MySQL 存储过程 - 使用 PHP 解析

arrays - 如何拒绝具有不需要的数字范围的数组

php - PHP 中的 sprintf 长度说明符

php - 转义 PHP sscanf 中的点?

c - 矩阵生成代码根本失败,我不知道为什么

java - 如何在Android中解析JSON数组(不是Json对象)