【发布时间】:2012-02-07 08:37:39
【问题描述】:
编辑:很抱歉造成混乱。刚刚从我的老板那里获得了发布这部分架构的许可。如果允许我发布图片,我会在原始帖子中提供更多详细信息。
我有一个如下所示的配置架构:
http://img717.imageshack.us/img717/7297/heirarchy.png
每个级别都包含在它下面的级别中(即 - 合作伙伴有多个程序),并且每个配置级别与其他类型的配置级别共享配置键(即 - 可以在合作伙伴处设置默认时区级别,然后被程序、产品组合或设备级别覆盖)。
这允许我们做的是为一种对象类型设置一个默认值,然后用更具体的分类法覆盖它。例如:
假设我有一个合作伙伴对象,它是一家公司。假设 hierarchy_configuration_key 1 是默认时区。我放置了一个partner_configuration,其中大多数情况下,该合作伙伴将位于东海岸(纽约时间)。
现在我有多个该合作伙伴支持的计划。假设特定程序位于加利福尼亚以外。我放了一个program_configuration,说明该程序中的设备是萨克拉门托时间。
现在让我们跳过投资组合,假设有人在加利福尼亚以外的地方注册了这个计划,但他仍然是客户。我们设置了一个设备配置,表明他们现在处于山区时间。
层次结构如下所示:
Level |Timezone (hierarchy_configuration_key 1)
---------------------------------------------------
Partner |NYC
Program |Sacramento
Portfolio |null (defaults to most granular above it, so Sacramento)
Device |Denver
现在我想选择按 hierarchy_configuration_key_id 分组的配置:
我可以使用内部连接来遍历各个级别,但我希望通过 select 为设备的主键 (device_id) 提供这样的结果(按 hierarchy_configuration_key_id 分组):
device_id |portfolio_id |program_id |partner_id |device_config |portfolio_config |program_config| partner_config
---------------------------------------------------------------------------------------------------------------------
1 |2 |1 |35 |Denver |null |Sacramento | NYC
同样可以接受的是一个选择,它只给了我最相关的配置值,即:
device_id |portfolio_id |program_id |partner_id |config_value
-------------------------------------------------------------
1 |2 |1 |35 |Denver
提前致谢。如果您需要更多说明,请告诉我。
【问题讨论】:
-
层数是常数4吗?哪个字段告诉 Miata 它是马自达的孩子?
-
什么是主键? 4级?此外,您的数据库结构不清楚。显示您的架构。
-
我添加了说明。很抱歉造成混乱。
标签: mysql sql select configuration hierarchy