Для некоторого фона я учусь использовать Oracle Apex, и на данный момент у меня есть страница с двумя выпадающими списками. Первый раскрывающийся список отображает доступные базы данных. Второй раскрывающийся список связан с первым раскрывающимся списком, в котором будут отображаться таблицы, связанные с базой данных, выбранной в первом раскрывающемся списке. Когда база данных выбрана, на той же странице создается кольцевая диаграмма, показывающая объем пространства, используемого каждой из связанных таблиц.
При выборе таблицы во втором раскрывающемся списке под кольцевой диаграммой создается сгруппированная диаграмма, показывающая, сколько места используется таблицей на конкретную дату, и сколько памяти остается свободным. Все это на одной странице.
Итак, проблема, с которой я столкнулся, заключается в том, что я хочу добавить возможность детализации на кольцевую диаграмму, в которой, когда пользователь выбирает сегмент (представляющий таблицу) на кольцевой диаграмме, соответствующая стековая диаграмма должна отобразить под пончик диаграммы. Я пытался адаптировать онлайн-решения, но они не сработали.
SQL, который я использую для создания кольцевой диаграммы:
SELECT NULL LINK, null, tablespace_name AS label, ROUND(
SUM(on_disk_size_mb ) / 1024 ) AS space_gb FROM
database_tablespaces WHERE ( database_name, tablespace_name,
last_seen )
IN (SELECT database_name, tablespace_name, MAX(last_seen) FROM database_tablespaces
GROUP BY database_name, tablespace_name)
GROUP BY NULL, tablespace_name
UNION ALL
SELECT NULL LINK, null, 'Free' "Database", ROUND(MAX(on_disk_free_mb)/1024) AS "Space
(GB)" FROM database_tablespaces WHERE (database_name,
tablespace_name, last_seen)
IN (SELECT database_name, tablespace_name, MAX(last_seen) FROM database_tablespaces
GROUP BY NULL, database_name, tablespace_name)
Это показывает мне, сколько места используется и сколько свободно.
SQL, который я использую для генерации диаграмм с накоплением:
SELECT 'f?p=' || :APP_ID || ':5:' || :APP_SESSION || '::NO:::' LINK,
SUM( ON_DISK_SIZE_MB ), SUM( ON_DISK_FREE_MB ), TO_CHAR(TRUNC( LAST_SEEN), 'DD/MM/YYYY' ) FROM database_tablespaces
WHERE LAST_SEEN > SYSDATE - 180 AND Tablespace_name = 'DATA'
GROUP BY TRUNC(LAST_SEEN)
ORDER BY TRUNC(LAST_SEEN) ASC
В онлайн-решениях было указано добавление f? P = ... в операторе select и псевдонима LINK в обоих кодах SQL. Я пробовал каждую перестановку, которую смог придумать, чтобы получить возможность детализации, но не удалось.
Так что я надеялся, что у кого-то, намного более опытного в Oracle Apex и SQL, могут быть средства для достижения этой цели?