PHP/SQL 将查询结果分组到数组中

标签 php mysql sql arrays

我正在开发一个特性租赁网站。

有关数据库对象/表关系的信息:

一个特性可以有多个单元(例如:酒店是一个特性,酒店客房是单元)。

每个单位都有不同时期(夏季、冬季等)的多个价格,在本例中我只想选择最高和最低价格。

OneProperty->ManyUnits->ManyPrices(仅查询中的最低和最高价格)

执行查询后,我希望以相同的方式得到一个数组,其中单元将按其属性进行分组,而不是每个单元都有一个属性。

property1->unit1->min_price
                ->max_price
         ->unit2->min_price
                ->max_price

property2->unit1->min_price
                ->max_price
         ->unit2->min_price
                ->max_price

而不是

property1->unit1->min_price
                ->max_price
property1->unit2->min_price
                ->max_price

property2->unit1->min_price
                ->max_price
property2->unit2->min_price
                ->max_price

什么是正确的查询(或者可能是查询)以及如何使用此信息按此顺序将结果存储到数组中?预先感谢您的帮助。

编辑: 这是我在查询中使用的逻辑的简化示例:

SELECT 
property.id as pid,unit.id as uid, min(prices.price) as min_price, max(prices.price) as max_price
FROM unit
JOIN property
ON property.id = unit.property_id
JOIN prices
ON unit.id = prices.unit_id

最佳答案

如果您使用属性 ID 和单元 ID 作为数组键,您应该能够构建所需的多维数组,如下所示:

while ($row = $result->someFetchArrayMethod()) {
    $result[$row['pid']][$row['uid']] = array(
        'min_price' => $row['min_price'],
        'max_price' => $row['max_price']);
}

关于PHP/SQL 将查询结果分组到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487743/

相关文章:

php - 登录后如何访问用户信息?

php - mySQL 上一个/下一个查询

php - 无法在服务器中插入信息,但我可以作为本地主机

php - MySQL 通过 "oe"、 "ae"、 "ue"找到元音变音

sql - 我可以在应用限制后重新排序 SQL 选择吗?

php - Laravel:在迁移过程中重命名表字段而不删除数据

mysql - 数据库设计中的更多行或更多表?

mysql - 是否有工具可以帮助我理解为什么某行包含在 SQL 查询的结果中?

mysql - 合并 sqlite 查询的行

php - 从我自己的 php 函数缓存 mysql