mysql查询可以返回单行中的所有实体字段吗?

时间:2015-07-05 09:11:56

标签: mysql

我正在尝试为建筑物及其所有信息设置架构。

因为建筑物的区域数量可能会有所不同,所以我将这些区域存储在一个表格中,区域", 其中每个区域都有一个指向其所属建筑物主键的外键。

我想要的是尝试在一行上获取建筑物的所有信息,如:

--------------------------------------------------------------------
id |   address           | owner     | area 1  |  area 2   | area 3 |
--------------------------------------------------------------------
1  | 21  kingsbridge  st | claudia   | kitchen |  bathroom |  garage|
--------------------------------------------------------------------

使用LEFT JOIN我可以获取信息,而不是格式为Im after

我在这里设置了一个架构 http://www.sqlfiddle.com/#!9/83558/6

希望有一个像GROUP BY之类的聚合函数这样的查询? 这有可能吗?

1 个答案:

答案 0 :(得分:1)

select x.pId, x.address, x.owner,
      max(x.area1) A1, max(x.area2) A2,max(x.area3) A3,max(x.area4) A4,max(x.area5) A5
from 
(
SELECT p.id pId, p.address, p.owner, a.id aId, a.property_id, a.area_name,
        case when a.area_name = 'kitchen' then a.area_name else null end as area1,
        case when a.area_name = 'garage' then a.area_name else null end as area2,
        case when a.area_name = 'checkout' then a.area_name else null end as area3,
        case when a.area_name = 'booths' then a.area_name else null end as area4,
        case when a.area_name = 'bathroom' then a.area_name else null end as area5
FROM   properties p
       LEFT JOIN areas a
              ON p.id = a.property_id
  ) as X
        GROUP BY pId, x.address, x.owner

但你需要知道什么是不同的区域。