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
)。无论是否有聚合数据,这都可以使用。但在阅读两次问题后,要返回非聚合街道名称,还必须使用聚合子选择的联接。查询生成器可以帮助您很多。