首先,我是Oracle的新手,这就是为什么我的问题对于有经验的开发人员而言可能很有趣的原因。不好意思。
是。我有一个表Test,带有3个列(ID,名称,组名)
表格
ID | Name | Group_name
1 | name1 | group 1
2 | name2 | group 1
3 | name3 | group 1
4 | name4 | group 2
5 | name5 | group 2
我想在oracle apex中创建一个选择列表。
-选择-
(Group 1)
Name 1
Name 2
Name 3
(Group 2)
Name 4
Name 5
其中 Group1 和 Group2 仅用于显示而不能选择。
我尝试过:
SELECT NAME, ID
FROM TEST
GROUP BY GROUP_NAME
给出错误:
不是按表达式分组
答案 0 :(得分:0)
首先,您的查询不是有效的SQL。不管是Apex还是sqlplus,在任何环境下都无法使用。但这并不重要,因为...
第二,由于您希望显示组名而不是选择组名,因此您尝试生成的HTML如下所示:
<select>
<optgroup label="Group 1">
<option>Name 1</option>
<option>Name 2</option>
<option>Name 3</option>
</optgroup>
....
顶点选择项目类型不支持<optgroup>
(除非它们在最新版本中已添加)。
我认为您的选择是编写一个插件,但这是一个相当高级的主题,或者使用别人已经制作的一个插件。 Select2 Apex Plugin可以满足您的需求。请参见该页面下方的“选项分组”。
答案 1 :(得分:0)
据我所知,在 Apex 中,您不会影响某些选择列表元素是否不可选择(这是您想要的组名)。
但是,您可以创建一个选择列表查询,以显示所需的内容。这是一个示例:
SQL> with test (id, name, group_name) as
2 (select 1, 'name1', 'group 1' from dual union all
3 select 6, 'name2', 'group 1' from dual union all
4 select 9, 'name3', 'group 1' from dual union all
5 --
6 select 2, 'name4', 'group 2' from dual union all
7 select 4, 'name5', 'group 2' from dual
8 ),
9 inter as
10 (-- Group names; ID is a negative value to make sure it is displayed first
11 select -row_number() over (order by group_name) id,
12 '(' || initcap(group_name) ||')' name, group_name
13 from test
14 group by group_name
15 union
16 -- members of the group
17 select id, name, group_name
18 from test
19 )
20 select name display_value,
21 id return_value
22 from inter
23 order by group_name, id;
DISPLAY_V RETURN_VALUE
--------- ------------
(Group 1) -1
name1 1
name2 6
name3 9
(Group 2) -2
name4 2
name5 4
7 rows selected.
SQL>