我正在开发一个特性租赁网站。
有关数据库对象/表关系的信息:
一个特性可以有多个单元(例如:酒店是一个特性,酒店客房是单元)。
每个单位都有不同时期(夏季、冬季等)的多个价格,在本例中我只想选择最高和最低价格。
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/