为 html 表中的每一行选择用户的最有效方法


Most efficient way to select users for each row in an html table

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

-我有一个表格"选举",每个选举都有一个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** 

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

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 解析例程来拉出数组的成员。