использование group by в oracle apex - PullRequest
0 голосов
/ 10 декабря 2018

Прежде всего, я новичок в Oracle, поэтому мой вопрос может быть забавным для опытных разработчиков.Заранее извините.

Ques. У меня есть таблица 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.

-Select-

(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

выдает ошибку:

не группа по выражению

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Насколько я могу судить, в native 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>
0 голосов
/ 11 декабря 2018

Во-первых, ваш запрос не является допустимым SQL.Это не будет работать в любой среде, будь то Apex или sqlplus.Но это не важно, потому что ...

Во-вторых, поскольку вы хотите, чтобы имена групп отображались, а не выбирались, HTML-код, который вы пытаетесь сгенерировать, будет выглядеть примерно так:

<select>
    <optgroup label="Group 1">
        <option>Name 1</option>
        <option>Name 2</option>
        <option>Name 3</option>
    </optgroup>
    ....

Apex Выберите типы элементов не поддерживают <optgroup> (если они не добавили это в последних версиях).

Я думаю, что вы можете написать плагин, но это довольно сложная тема, или использовать тот, который уже кто-то сделал.Плагин Select2 Apex подойдет для ваших целей.См. «Группировка опций» ниже на этой странице.

...