如何基于多条件从Oracle APEX视图中筛选关联数据?
问题描述
现有视图info,结构及数据如下:
| id | name | contacts |
|---|---|---|
| 1 | ali | 1234 |
| 1 | ali | 122 |
| 2 | john | 133 |
| 2 | john | 144 |
| 2 | john | 122 |
| 3 | mike | 111 |
| 4 | khan | 444 |
| 5 | jan | 122 |
| 5 | jan | 155 |
在Oracle APEX报表中使用该视图数据时,需要实现:输入指定ID(如id=1)进行搜索,返回该ID的所有记录,同时包含所有与该ID记录中contacts值关联的其他ID的全部记录。预期结果如下:
| id | name | contacts |
|---|---|---|
| 1 | ali | 1234 |
| 1 | ali | 122 |
| 2 | john | 133 |
| 2 | john | 144 |
| 2 | john | 122 |
| 5 | jan | 122 |
| 5 | jan | 155 |
解决方案
使用以下SQL作为Oracle APEX报表的数据源,假设页面项P1_SEARCH_ID用于接收用户输入的ID:
SELECT id, name, contacts FROM info WHERE id = :P1_SEARCH_ID OR contacts IN (SELECT contacts FROM info WHERE id = :P1_SEARCH_ID) ORDER BY id, contacts;
逻辑说明
- 子查询先提取目标ID对应的所有
contacts值; - 主查询筛选出两类记录:目标ID的全部记录,以及所有包含上述
contacts值的其他记录; - 将报表的数据源设置为该SQL,并绑定页面项
P1_SEARCH_ID,即可实现动态搜索需求。
内容的提问来源于stack exchange,提问作者Arifullah
相关产品推荐
相关产品推荐

