Отображение значения из другого столбца в той же таблице в Oracle APEX

#sql #oracle-apex

#sql #оракул-апекс

Вопрос:

Я борюсь с Oracle APEX. У меня есть коробка для шаттлов с тестовыми запусками. Кроме того, у меня есть фильтр, который фильтрует их на основе проекта. Когда я выбираю «Все проекты», мои тестовые запуски отображаются правильно, как показано ниже: введите описание изображения здесь

ОДНАКО, когда я применяю фильтр к определенному проекту, окно выбора с правой стороны перестанет отображать имена тестовых запусков и вместо этого покажет мне идентификатор тестового запуска

введите описание изображения здесь

Мой запрос на эту конфигурацию таков:

 select name as d, test_run_id as r From test_run  Where project_jira_key=coalesce(:TR_BASED_ON_PROJECT, project_jira_key)  and folder_id NOT IN(select folder_id  from folder where name in (select column_value from table (apex_string.split(config.get('ATM_DASHBOARD_CONFIGURATION_FOLDER_EXCLUDE'), ','))));  

Я все еще довольно новичок в APEX и SQL в целом, но я предполагаю, что «r» — это возвращаемые значения с правой стороны? Я также предполагаю, что «test_run_id как r» должен оставаться там, поскольку test_run_id является первичным ключом этой таблицы. Есть ли способ отобразить test_run.name? Это столбец в той же таблице. Заранее спасибо

Ответ №1:

Компонент shuttle отображает значения, которые находятся в компоненте страницы с правой стороны, а остальные доступные значения-с правой стороны на основе источника компонента. Вот небольшой пример, иллюстрирующий, как это работает с набором данных emp/dept.

  • Создайте пустую страницу со статической областью и элементом страницы P1_EMP типа «Шаттл» с исходным кодом «SQL-запрос» и исходным кодом:
 SELECT ename, empno FROM emp  

Запустите страницу. Обратите внимание, что справа вы можете выбрать список имен сотрудников. Правая сторона пуста.

  • Создайте вычисление перед областями на P1_EMP типа статическое значение и значение «7566:7788» — это значения empno для ДЖОНСА и СКОТТА, представленные в списке с разделителями двоеточия (как apex обрабатывает значения с несколькими выборками).

Запустите страницу. Обратите внимание, что теперь выбраны ДЖОНС и СКОТТ. В левой части показаны все остальные значения. Что происходит, так это то, что механизм apex проверил набор результатов (номера сотрудников) компонента и отобразил значения отображения (имена сотрудников) для обеих сторон шаттла на основе исходного запроса

Теперь измените исходный запрос на P1_EMP на

 SELECT ename, empno FROM emp WHERE ename IN ('KING','ADAMS')  

Запустите страницу. Обратите внимание, что справа указаны значения 7566 и 7788. В наборе результатов исходного запроса для этих значений нет соответствующих значений, поэтому идентификаторы отображаются в качестве их исходного значения.

Итак, есть объяснение, почему вы видите числовые значения на правой стороне вашего шаттла. Эти значения содержатся в элементе страницы, но их нет в результирующем наборе отфильтрованного запроса. Вопрос в том, какого поведения вы хотите

  • не выводите значения, которых нет в запросе. Решение: установите для атрибута «Отображать дополнительные значения» значение «Выкл.».
  • покажите возвращаемые значения идентификаторов с правой стороны, даже если они не отображаются в исходном запросе. Решение: измените запрос таким образом, чтобы он включал значения, которые уже есть в элементе страницы. Этого можно достичь, добавив в запрос объединение, которое отображает все результаты без фильтра. UNION Предложение будет отфильтровывать повторяющиеся значения, если они существуют:
 SELECT ename, empno FROM emp WHERE ename IN ('KING','ADAMS') UNION ALL SELECT ename, empno FROM emp WHERE empno IN (select column_value from table (apex_string.split(:P54_EMP, ':')))