Postgresql 动态生成查询时,如何找到要分组的列?
我需要实现一个功能,用户将动态生成报告。 在该功能中,用户将看到一个界面,用于选择某些特定模块。每个模块将在内部指向一组表 考虑下表Postgresql 动态生成查询时,如何找到要分组的列?,postgresql,postgresql-8.4,Postgresql,Postgresql 8.4,我需要实现一个功能,用户将动态生成报告。 在该功能中,用户将看到一个界面,用于选择某些特定模块。每个模块将在内部指向一组表 考虑下表 **Table Name : module_location** location_id location_name ->Contains a location name **Table Name : module_streets** street_id street_location_id (F.K module_location.location_id
**Table Name : module_location**
location_id
location_name ->Contains a location name
**Table Name : module_streets**
street_id
street_location_id (F.K module_location.location_id)
street_name ->Contains street name in a location
如果用户选择模块名位置
,那么他实际上是在选择要查询的列表表(这是在内部完成的)
在这种情况下,模块位置
和模块街道
(它们将通过位置id连接)。
选择位置
模块后,用户必须选择生成后需要在动态报告中显示的字段集。
因此,他将获得一个界面来选择这些字段。接口中给出的名称将是表中各个字段的别名
即
将向用户提供选择以下选项的选项
Location Name -> Corresponds to the field 'location_name'
Street Name -> Corresponds to the field 'street_name'
选择需要显示的字段后,用户必须选择一些条件,如(计数、求和等)
假设条件类似于获取某个位置的街道数
,则用户必须在街道名称
选项中添加条件计数
选择条件后,用户只需单击submit按钮即可生成报告
我在这里面临的问题是如何决定要分组的列。如果这是手动完成的,我知道我需要将位置\u id
分组以获取计数。那么,如果查询是动态生成的,我该怎么做呢
请帮忙。我使用的数据库是PostgreSQL 8.4当用户选择查询位置f.ex的数据时,您可以始终使用
分组模块位置。*
(或者对于不太古老的PostgreSQL版本,由于函数依赖性,您可以使用分组模块位置。位置id
)。无论是否有聚合数据,这都可以使用。但在阅读两次问题后,要返回非聚合街道名称,还必须使用聚合子选择的联接。查询生成器可以帮助您很多。