我有以下结构
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结构是否是这种动态复杂性的问题?
答案 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
它将随时支持两个表中的编辑,并且性能良好。