我会很快的。
问题: My子查询返回多行(这是可以的,因为它应该返回多个行,或只返回一个行),并触发ora错误1427,关闭查询结果。
问题:如何显示这个子查询的所有寄存器?
Notes
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;表示例:
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。
代码更新*
结果应该是:
ID Name Age Gender Adress
1 Lapras 6 Female Avenue one
1 Lapras 6 Female Avenue two
2 Lincon 45 Male Avenue eleven发布于 2016-08-08 17:30:17
要获得您想要的结果(根据您的示例输入/输出),需要使用JOIN,并为多个类别加上一些逻辑。下面是使用您引用的两个类别(gender和adress)的一个可能的示例:
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个值)。尽管如此,这种类型的查询似乎是您要寻找的。
发布于 2016-08-08 14:46:40
为什么要使用子查询?这是一个简单的JOIN
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';https://stackoverflow.com/questions/38832224
复制相似问题