SQL动态结构

时间:2014-05-26 17:31:17

标签: sql postgresql

我有以下结构

construction
id
1

building-step
id construction_id  step_id     worker_id
1  1                1           1
1  1                2           2

step
id name
1  foundation
2  wall
3  roof

使用模板添加新构造时,会生成构建步骤。可以添加或删除初始配置步骤。

其中一个要求是将构造模板显示为字符串。该模板是动态的,因为您可以添加和删除步骤。 在这种情况下,模板名称是" foundation + wall"。如果我添加另一个构建步骤,模板名称将为" foundation + wall + roof"。

我的问题是,如何以优化的方式完成? SQL结构是否是这种动态复杂性的问题?

1 个答案:

答案 0 :(得分:1)

在Postgres中,你可以使用string_agg函数,该函数可以串行字符串行。

在您的示例中,您可以尝试:

select string_agg(nm,'+') from(
    select st.name as nm
    from building-step bs
    inner join 
    step st
    on bs.step_id=st.id
    where bs.construction_id=1
    order by bs ASC
); --done by hand, may have small errors

它将随时支持两个表中的编辑,并且性能良好。