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

时间:2013-11-03 14:38:54

标签: php html sql postgresql

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

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

1 个答案:

答案 0 :(得分: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解析例程来拉出数组的成员。