我的SQL知识不是我最强的,我正在努力寻找如何实现我所寻找的目标。
当我运行我的查询时,我想显示房子的名称,然后在下面我想显示所有与房子相关的房间(这些房间可以租用)
所需显示
15 Property Way - PP34PQ
Double bedroom - £500.00P/M
Single bedroom - £300.00P/M
当前显示
15 Property Way - PP34PQ Double bedroom - £500.00P/M
15 Property Way - PP34PQSingle bedroom - £300.00P/M
我猜我需要写一些分组查询才能做到这一点,但我不太清楚如何实现这一目标。我当前的查询看起来像这样
SELECT properties.prop_details, properties.num_rooms, addresses.addr_line_1,
addresses.addr_postcode, addresses.addr_city, room_details
FROM rooms
JOIN properties ON properties.property_id = rooms.property_id
JOIN addresses ON addresses.addr_id = properties.prop_addr
JOIN cities ON addresses.addr_city = cities.city_id
WHERE rooms.property_id = 1;
非常感谢任何帮助。
答案 0 :(得分:1)
听起来您尝试构建报告并尝试使用SQL而不是Web解决方案进行显示。
将数据及其展示分开。
获取数据表,然后使用PHP循环访问它,为每个建筑创建一个表。
通常,你会使用递归,但MySQL不支持它。
您可以使用
ORDER BY premise.name, premise.id, room.nr, room.id
我猜您需要按房间和属性字段进行分组,使用地址和城市字段的最大聚合函数,因为属性(建筑物)可以有多个地址,每个入口一个......
SELECT
premises.field_1
,premises.field_2
,premises.field_3
,room.field_1
,room.field_2
,room.field_3
,max(address.field1) as adr_f1
,max(address.field2) as adr_f2
,max(address.field3) as adr_f3
FROM Whatever
JOIN WHATEVER
WHERE (1=1)
AND (whatever)
GROUP BY
premises.field_1
,premises.field_2
,premises.field_3
,room.field_1
,room.field_2
,room.field_3
HAVING (WHATEVER)
ORDER BY premises.field_x, room.field_y