Sql 一次查询多个视图数据
我有一个应用程序,它使用Oracle数据库中的列表框条目。 加载时,应用程序使用5到10个到数据库的连接来获取所有listbox值,开始时有点慢 我想出了一个主意,在一个查询中获取所有数据,然后将每个列添加到正确的列表框中。然而,我不确定这是否可能,如果是,如何做到这一点。我试图在谷歌上找到解决方案,但没有找到匹配项 来自不同表的数据没有任何关联——它只是稍后需要的单词或ID的列表 典型的SQL查询尝试连接数据,这不是我想要的结果,下面是示例代码Sql 一次查询多个视图数据,sql,oracle,Sql,Oracle,我有一个应用程序,它使用Oracle数据库中的列表框条目。 加载时,应用程序使用5到10个到数据库的连接来获取所有listbox值,开始时有点慢 我想出了一个主意,在一个查询中获取所有数据,然后将每个列添加到正确的列表框中。然而,我不确定这是否可能,如果是,如何做到这一点。我试图在谷歌上找到解决方案,但没有找到匹配项 来自不同表的数据没有任何关联——它只是稍后需要的单词或ID的列表 典型的SQL查询尝试连接数据,这不是我想要的结果,下面是示例代码 SELECT desk.id_numbe
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
…这是我想要获得的数据
+---------+-----------+---------------+-----------------+
| desk_id | desk_name | subpurpose_id | subpurpose_name |
+---------+-----------+---------------+-----------------+
| 1 | desk1 | 11 | sub11 |
| 2 | desk2 | 12 | sub12 |
| 3 | desk3 | 13 | sub13 |
+---------+-----------+---------------+-----------------+
所以你可以这样做,虽然我觉得这很混乱,我不推荐这样做
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
问题是,由于您的表实际上根本不相关,因此您自然希望进行交叉联接,但这将为您提供两个表的所有结果组合-因此您希望对其进行筛选,以便将表1中的第1行与表2中的第1行相匹配,以此类推
编辑:当每个表中有不同数量的行时,我更新了它,使其能够工作——为此,您需要一个完整的外部联接
在您的场景中,我建议使用一个带有添加列的联合,该列只描述每行所属的列表框。它更容易阅读和维护
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
感谢您的anwser,但它不起作用。也许我应该提到每个表有不同数量的记录?目前,我得到的记录只有desk_table的8条记录,而其他表格有50多条记录。你的建议很有趣,但我的表格并不总是相同的类型,它会发出错误的尖叫声。哦,对了,更新以处理每个表格中不同数量的记录。这正是我想要的。感谢您和一个大加号的替代解决方案。