我有三个看起来像这样的表
表A
TIME_EFFECTIVE DESCRIPTION ID DATAVAL
1998/01/11 12:00:00 AM DescA 1 1
1998/01/11 12:00:00 AM DescA 2 2
1998/01/11 12:00:00 AM DescB 1 3
1998/01/11 11:00:00 AM DescA 2 4
表B
HOUR DESCRIPTION ID OSO
1998/01/11 12:00:00 AM DescA 1 10
1998/01/11 12:00:00 AM DescA 2 34
1998/01/11 12:00:00 AM DescB 1 12
1998/01/11 11:00:00 AM DescA 2 40
表C
DESCRIPTION CVAL VVAL
DescA 12 1
DescB 34 2
我希望这个...在某个日期之后的所有TIME_EFFECTIVE ......
结果表
TIME_EFFECTIVE DESCRIPTION ID DATAVAL OSO CVAL VVAL
1998/01/11 12:00:00 AM DescA 1 1 10 12 1
1998/01/11 12:00:00 AM DescA 2 2 34 12 1
1998/01/11 12:00:00 AM DescB 1 3 12 34 2
1998/01/11 11:00:00 AM DescA 2 4 40 12 1
每TIME_EFFECTIVE,DESCRIPTION和ID一条记录。没有重复这三个字段的重复。
什么是我完美的ORACLE SQL连接函数???
PS 我的结果表应该没有比表A更多的行。
答案 0 :(得分:3)
你应该使用一些JOIN
select a.TIME_EFFECTIVE, a.DESCRIPTION, a.ID, a.DATAVAL, b.OSO, c.CVAL, c.VVAL
from table_a a
inner join table_b b on a.TIME_EFFECTIVE = b.HOUR
and a.DESCRIPTION = b.DESCRIPTION
and a.ID = b.ID
inner join table_c on c.DESCRIPTION = a.DESCRIPTION
答案 1 :(得分:3)
您是否尝试过INNER JOIN
?
另外,查看结果表,它似乎不匹配。 VVAL
DescB
不应该1
为GenericRecord<Furniture> furnObj[10][3];
吗?如果没有,那么就会缺少一些步骤......
答案 2 :(得分:3)
表C中的VVAL存在一个小问题,行('DescB', 34, 1)
您的输出请求2,但在表中它是1.如果这是2,您将获得所需的输出。
SELECT A.*
,B.OSO
,C.CVAL
,C.VVAL
FROM A INNER JOIN B ON A.TIME_EFFECTIVE = B.HOUR AND A.DESCRIPTION = B.DESCRIPTION AND A.ID = B.ID
INNER JOIN C ON A.DESCRIPTION = C.DESCRIPTION
提供输出:
TIME_EFFECTIVE DESCRIPTION ID DATAVAL OSO CVAL VVAL
----------------------- ----------- ----------- ----------- ----------- ----------- -----------
1998-01-11 00:00:00.000 DescA 1 1 10 12 1
1998-01-11 00:00:00.000 DescA 2 2 34 12 1
1998-01-11 00:00:00.000 DescB 1 3 12 34 2
1998-01-11 11:00:00.000 DescA 2 4 40 12 1