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

时间:2016-04-07 21:41:54

标签: 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

INSTEAD OF

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

1 个答案:

答案 0 :(得分:1)

如果您使用属性ID和单位ID作为数组键,您应该能够构建您想要的多维数组:

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