首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单行子查询返回多个行-实解决方案。

单行子查询返回多个行-实解决方案。
EN

Stack Overflow用户
提问于 2016-08-08 14:45:21
回答 2查看 390关注 0票数 0

我会很快的。

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

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

Notes

  • 我在网上的所有搜索都说你可以限制1,但这不是我真正想要的。
  • D表就像一个矩阵,我给FIELD4一个特定的值,它将字段返回给我。在同一个查询中,我有另一个值给FIELD4,并在字段中返回另一个类型和业务结果。
代码语言:javascript
复制
 SELECT (SELECT B.Value
                FROM TABLE_B B
             WHERE B.FIELD1 = A.FIELD1
                 AND B.FIEL2 = A.FIELD2
                 AND B.FIELD3 = A.FIELD3
                 AND B.Category= 'Adress') AS RESULT_FIELD,
         (SELECT B.Value
                FROM TABLE_B B
             WHERE B.FIELD1 = A.FIELD1
                 AND B.FIEL2 = A.FIELD2
                 AND B.FIELD3 = A.FIELD3
                 AND B.Category= 'Gender') AS RESULT_FIELD2
FROM TABLE_A A;

表示例:

代码语言:javascript
复制
Table A   

ID   Name      Age    
1    Lapras     6    
2    Lincon     45


Table B    

ID   A_ID    Category      Value    
1      1       Gender      Female    
2      2       Gender      Male    
3      1       Adress      Avenue one    
4      1       Adress      Avenue Two    
5      2       Adress      Avenue Eleven

正如您所看到的,它在B上有多个寄存器,我需要在结果表中显示所有的附件,考虑到我传递给分类colunm的condicional。

代码更新*

结果应该是:

代码语言:javascript
复制
ID Name    Age Gender   Adress 
1  Lapras  6   Female   Avenue one
1  Lapras  6   Female   Avenue two
2  Lincon  45  Male     Avenue eleven
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-08 17:30:17

要获得您想要的结果(根据您的示例输入/输出),需要使用JOIN,并为多个类别加上一些逻辑。下面是使用您引用的两个类别(genderadress)的一个可能的示例:

代码语言:javascript
复制
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';

注意,您最终得到了范畴值的笛卡儿积。例如,如果某人为第一类输入了两个值(可能不是性别,而是另一个),而另一个输入了两个值,那么您将得到4个结果--每个排列的结果(每个类别中有2个类别x2个值)。尽管如此,这种类型的查询似乎是您要寻找的。

票数 2
EN

Stack Overflow用户

发布于 2016-08-08 14:46:40

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

代码语言:javascript
复制
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';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38832224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档