0

我将尝试以一种简单的方式来解释它:

-我有一个“选举”表,每次选举都有一个 id 和一些其他字段(例如投票数、开始日期等)。
-我有一个“候选人”表,每个候选人都有一个“候选人选举”字段,这是对选举表的 id 字段的外部引用。简而言之:您可以编辑此字段的特定选举候选人。

现在,我想制作一个表格,并且每一行都有这样的东西:

election id | election description | candidates (<select> <option> construct

每行都有一个<select> <option>滚动菜单,其中包含特定选举的候选人。

现在,我的第一个想法是对每一行进行选择查询:

select id from candidates where election=row_id

但对我来说似乎效率很低:对于我创建的每一行,我都必须进行查询。

有没有更好的办法?

例子:

选举:

id|end date | role
2 | 01/01/2012 | major
3 | 01/02/2012 | secretary

用户:

id| name |election 
1 |donald | 2
2 |goofy | 2
3 |mickey | 3

现在是一个简单的 html 行:

01/01/2012 | major | **select/option choice with goofy and donald**

01/02/2012 | secretary| **select/option choice with just mickey** 
4

1 回答 1

1

你大部分时间都在那里。我唯一要做的就是在单个查询中选择包括行标识符在内的所有内容。

select id from candidates where election=row_id

将被替换为

select election, id from candidates where election in (row_id_1, row_id_2, etc);

现在你可以进一步这样做:

SELECT election, array_agg(id) from candidates 
 where election in (row_id_1, row_id_2, etc)
ORDER BY election
GROUP BY election;

然后对于每次选举,您都会得到一系列候选人,例如:{1, 3, 55}

如果你去掉外面的括号,你可以使用 csv 解析例程来提取数组的成员。

于 2013-12-06T02:08:56.277 回答