Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 一次查询多个视图数据_Sql_Oracle - Fatal编程技术网

Sql 一次查询多个视图数据

Sql 一次查询多个视图数据,sql,oracle,Sql,Oracle,我有一个应用程序,它使用Oracle数据库中的列表框条目。 加载时,应用程序使用5到10个到数据库的连接来获取所有listbox值,开始时有点慢 我想出了一个主意,在一个查询中获取所有数据,然后将每个列添加到正确的列表框中。然而,我不确定这是否可能,如果是,如何做到这一点。我试图在谷歌上找到解决方案,但没有找到匹配项 来自不同表的数据没有任何关联——它只是稍后需要的单词或ID的列表 典型的SQL查询尝试连接数据,这不是我想要的结果,下面是示例代码 SELECT desk.id_numbe

我有一个应用程序,它使用Oracle数据库中的列表框条目。 加载时,应用程序使用5到10个到数据库的连接来获取所有listbox值,开始时有点慢

我想出了一个主意,在一个查询中获取所有数据,然后将每个列添加到正确的列表框中。然而,我不确定这是否可能,如果是,如何做到这一点。我试图在谷歌上找到解决方案,但没有找到匹配项

来自不同表的数据没有任何关联——它只是稍后需要的单词或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
…这是我想要获得的数据

+---------+-----------+---------------+-----------------+ | 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多条记录。你的建议很有趣,但我的表格并不总是相同的类型,它会发出错误的尖叫声。哦,对了,更新以处理每个表格中不同数量的记录。这正是我想要的。感谢您和一个大加号的替代解决方案。