2016-09-12 54 views
0

在我的Postgresql数据库中,我有多个参考数据表。 例子:返回一行中的所有数据

- Gender(id:Serial, name:varchar) 
- Sexuality(id:Serial, name:varchar) 
- Location(id:Serial,name:varchar) 

检索所有的一切我做的3条独立的select语句的表的信息。 例子:

- "SELECT name from Gender; 
- "SELECT name from Sexuality; 
- "SELECT name from Location; 

我怎样才能做成一个电话本,使其返回一行是这样的:

ReferenceData(allGenders:varchar[], allSexualities:varchar[], allLocations:varchar[]) 

我希望能够能够这样做客户端 - >

var genders = results.row[0].allGenders; 
for gender in genders { 
    print(gender); 
} 

回答

1

可以使用array_agg aggragate函数来从多个行值组合成一个单一的阵列,例如

SELECT array_agg(name) FROM Gender 

将返回所有性别作为单个数组。如果你想同时从所有3张表中获得所有信息,你可以这样做:

SELECT 
    (SELECT array_agg(name) FROM Gender), 
    (SELECT array_agg(name) FROM Sexuality), 
    (SELECT array_agg(name) FROM Location);