Oracle Join - 返回非连接列

时间:2013-01-29 17:27:51

标签: sql oracle join

我正在最艰难的时间找出此查询的连接语法。

假设我从Oracle SQL查询中得到以下结果:

结果1:

Id1:    Id2:    Char1:    Char2:    ...   CharN:
123a    ABC     c1a       c2a       ...   cNa
123b    DEF     c1b       c2b       ...   cNb

而且,在同一个数据库中,我有一个基于Id2的“映射表”,只需以下内容:

映射表:

Id1:    Id2:
123a    ABC
234a    ABC
345a    ABC
456a    ABC
123b    DEF
234b    DEF

而且,现在我要做的是复制Id1匹配的映射表中每个Id2的结果 - 给我最终结果:

期望的结果:

Id1:    Id2:    Char1:    Char2:    ...   CharN:
123a    ABC     c1a       c2a       ...   cNa
234a    ABC     c1a       c2a       ...   cNa
345a    ABC     c1a       c2a       ...   cNa
456a    ABC     c1a       c2a       ...   cNa
123b    DEF     c1b       c2b       ...   cNb
234b    DEF     c1b       c2b       ...   cNb

换句话说,在Id1匹配的映射表中为每条记录更改Id2重复结果。

我正在尝试使用某种外部联接,但我根本无法正确理解语法!

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

如果我正确理解你的问题,你不想加入Id1,而是加入Id2。试试这个:

SELECT M.Id1, M.Id2, R.Char1, R.Char2
FROM Mapping M 
   JOIN Result1 R ON M.Id2 = R.Id2

如果您在Result1表中使用Id2重复行,​​则可能会返回重复记录,在这种情况下,您必须告诉我们与哪个记录匹配或使用重复记录。

这是SQL Fiddle

祝你好运。