我正在开设物业租赁网站。
有关数据库对象/表关系的信息:
一个房产可以有多个单位(例如:酒店是酒店,酒店房间是单位)。
每个单位有不同时期(夏季,冬季等)的多个价格,在这种情况下,我只想选择最高和最低价格。
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
答案 0 :(得分:1)
如果您使用属性ID和单位ID作为数组键,您应该能够构建您想要的多维数组:
while ($row = $result->someFetchArrayMethod()) {
$result[$row['pid']][$row['uid']] = array(
'min_price' => $row['min_price'],
'max_price' => $row['max_price']);
}