Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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,我会很快的 问题:我的子查询返回多行(这是可以的,因为它应该返回多行,或者只返回一行),并触发ora错误1427,关闭查询结果 问题:如何显示此子查询的所有寄存器 注释 我在互联网上的所有搜索都说你可以限制1,但这不是我真正想要的 D表就像一个矩阵,我给FIELD4一个特定的值,它返回给我FIELD。在同一个查询中,我对FIELD4有另一个值,并在FIELD上返回另一个类型和业务结果 表格示例: 如您所见,它在B上有多个寄存器,考虑到我传递类别colunm的条件,我需要在结果表上显示所有

我会很快的

问题:我的子查询返回多行(这是可以的,因为它应该返回多行,或者只返回一行),并触发ora错误1427,关闭查询结果

问题:如何显示此子查询的所有寄存器

注释

  • 我在互联网上的所有搜索都说你可以限制1,但这不是我真正想要的

  • D表就像一个矩阵,我给FIELD4一个特定的值,它返回给我FIELD。在同一个查询中,我对FIELD4有另一个值,并在FIELD上返回另一个类型和业务结果


表格示例:
如您所见,它在B上有多个寄存器,考虑到我传递类别colunm的条件,我需要在结果表上显示所有地址

代码更新*

结果应该是:

ID Name    Age Gender   Adress 
1  Lapras  6   Female   Avenue one
1  Lapras  6   Female   Avenue two
2  Lincon  45  Male     Avenue eleven

为什么要使用子查询?这是一个简单的
连接

SELECT B.FIELD as RESULT_FIELD
FROM TABLE_A A JOIN
     TABLE_B B
     ON B.FIELD1 = A.FIELD1 AND
        B.FIEL2 = A.FIELD2 AND
        B.FIELD3 = A.FIELD3 AND
        B.FIELD4 = 'SOMETHING';

为什么要使用子查询?这是一个简单的
连接

SELECT B.FIELD as RESULT_FIELD
FROM TABLE_A A JOIN
     TABLE_B B
     ON B.FIELD1 = A.FIELD1 AND
        B.FIEL2 = A.FIELD2 AND
        B.FIELD3 = A.FIELD3 AND
        B.FIELD4 = 'SOMETHING';

要获得所需的结果(根据示例输入/输出),需要使用
JOIN
,以及多个类别的一些逻辑。下面是一个可能的示例,使用您引用的两个类别(
gender
address
):


请注意,最终得到的是类别值的笛卡尔积。例如,如果有人为第一个类别输入了两个值(可能不是性别,而是另一个),为第二个类别输入了两个值,那么您将返回4个结果-每个排列的结果(每个类别中2个类别x 2个值)。即便如此,这种类型的查询似乎正是您所需要的。

要获得所需的结果(根据您的示例输入/输出),需要使用
JOIN
,以及多个类别的一些逻辑。下面是一个可能的示例,使用您引用的两个类别(
gender
address
):


请注意,最终得到的是类别值的笛卡尔积。例如,如果有人为第一个类别输入了两个值(可能不是性别,而是另一个),为第二个类别输入了两个值,那么您将返回4个结果-每个排列的结果(每个类别中2个类别x 2个值)。即便如此,这种类型的查询似乎正是您所需要的。

对不起,我没有提到D表就像一个矩阵,我给了FIELD4一个特定的值,它将FIELD返回给我。在同一个查询中,我对FIELD4有另一个值,并在FIELD上返回另一个类型和业务结果。我不知道这些信息是否相关,或者解决方案是否像你提到的那样简单。谢谢您的查询正在为基表(表A)中的N条记录返回N个结果。子查询不能用于创建其他行-这意味着对于表_A的每一行,子查询必须为基表中的N行中的每一行返回一个值。也许我们误解了您想要的结果-您能提供一些示例输入和预期输出吗?对于表A中的每一行,您希望“矩阵”(表B)中的所有匹配值都分散在多列中,还是什么?很抱歉,我没有提到D表就像一个矩阵,我给了字段4一个特定的值,它将字段返回给我。在同一个查询中,我对FIELD4有另一个值,并在FIELD上返回另一个类型和业务结果。我不知道这些信息是否相关,或者解决方案是否像你提到的那样简单。谢谢您的查询正在为基表(表A)中的N条记录返回N个结果。子查询不能用于创建其他行-这意味着对于表_A的每一行,子查询必须为基表中的N行中的每一行返回一个值。也许我们误解了您想要的结果-您能提供一些示例输入和预期输出吗?对于表_A中的每一行,您希望“矩阵”(表_B)中的所有匹配值都分散在多个列中,还是什么?您的查询(您自己承认它不能满足您的要求)无助于理解您的需求。请展示一个小的,由你的输入表组成的样本,一个你的输出样本(如果你不能用其他方法,请用手),以及从一个到另一个的逻辑。然后,展示你在解决方案上的尝试总是很重要的(根据论坛规则,可能是必需的),并解释什么不起作用。您已经完美地涵盖了最后一部分,但没有涵盖第一部分。谢谢你的询问(你自己承认这并不能满足你的需求)对理解你的需求毫无帮助。请展示一个小的,由你的输入表组成的样本,一个你的输出样本(如果你不能用其他方法,请用手),以及从一个到另一个的逻辑。然后,展示你在解决方案上的尝试总是很重要的(根据论坛规则,可能是必需的),并解释什么不起作用。您已经完美地涵盖了最后一部分,但没有涵盖第一部分。谢谢
SELECT B.FIELD as RESULT_FIELD
FROM TABLE_A A JOIN
     TABLE_B B
     ON B.FIELD1 = A.FIELD1 AND
        B.FIEL2 = A.FIELD2 AND
        B.FIELD3 = A.FIELD3 AND
        B.FIELD4 = 'SOMETHING';
SELECT A.ID, A.Name, A.Age, B1.Value as Gender, B2.Value as Address
FROM TABLE_A A
LEFT OUTER JOIN TABLE_B B1 ON B1.A_ID = A.ID AND B1.Category = 'Gender'
LEFT OUTER JOIN TABLE_B B2 ON B2.A_ID = A.ID AND B2.Category = 'Adress';