sql - 一次查询多视图数据
问题描述
我有一个使用 Oracle 数据库中的列表框条目的应用程序。加载应用程序时,使用 5 到 10 个与数据库的连接来获取所有列表框值,并且在开始时有点慢。
我想出了一个想法,即在一个查询中获取所有数据,然后将每一列添加到正确的列表框中。但是我不确定这是否可能,如果是的话,如何做到这一点。我试图在谷歌和 SO 上找到解决方案,但没有找到匹配项。
来自不同表的数据没有任何关系——它只是稍后需要的单词或 ID 列表。
典型的 SQL 查询尝试加入数据,这不是我正在寻找的结果,下面的示例代码。
SELECT
desk.id_number as desk_id,
desk.name as desk_name,
sub.id as subpurpose_id,
sub.sub_purpose as subpurpose_name
FROM
desk_table desk,
sub_table sub
...这是我想要实现的数据。
+---------+-----------+----------------+----------- ------+ | 桌号 | 桌名 | 子目的_id | 子目的名称 | +---------+-----------+----------------+----------- ------+ | 1 | 办公桌1 | 11 | 子11 | | 2 | 办公桌2 | 12 | 子12 | | 3 | 办公桌3 | 13 | 子13 | +---------+-----------+----------------+----------- ------+
解决方案
所以你可以这样做,虽然我认为它很乱,我不会推荐它。
SELECT
desk.id_number as desk_id,
desk.name as desk_name,
sub.id as subpurpose_id,
sub.sub_purpose as subpurpose_name
FROM
(select desk_table.*, rownum rn from desk_table) desk
FULL OUTER JOIN (select sub_table.*, rownum rn from sub_table) sub
ON desk.rn = sub.rn
问题是,由于您的表实际上根本不相关,您自然会想要做 a cross join
,但这会给您两个表的结果的每个组合 - 所以您想过滤它以匹配table1中的第 1 行来自 table2的第 1 行等。
编辑:当每个表中有不同数量的行时,我将其更新为可以工作-为此,您需要完整的外部联接。
在您的场景中,我建议使用带有添加列的 UNION,该列仅描述每行所属的列表框。它更容易阅读和维护。
SELECT 'DESK' as listbox, id_number as id, name
FROM desk_table
UNION ALL
SELECT 'SUBPURPOSE', id as id, sub_purpose as name
FROM sub_table
推荐阅读
- html - Flutter:从网站获取“原始” html 文档
- xml - 将 xml/xmi 格式的 SysML 模型导入图形数据库
- survival-analysis - 使用 cph 功能校准(使用外部验证)
- javascript - Laravel 在 If 中使用 div 值
- sharpziplib - 用于 .NET Core 的 C# SharpZipLib
- javascript - React.js 路由器转到其他页面呈现空白页面
- generics - “预期类型参数,找到整数”从函数调用但不是从 main 调用
- javascript - JSX 元素类型“GoogleMapReact”没有任何构造或调用 signatures.ts(2604)
- javascript - for loop return ,我无法获取值。只返回最后一个值
- sql - 指定要更新的特定年份