返回整个记录集x次(其中x是另一个表中的行数)

时间:2011-04-01 23:48:00

标签: sql database oracle

假设我有两张桌子。

TableA只有一列,看起来像这样(它总是只有一列,但此列中的值会随时间变化):

TableA
------
Column1:
   A
   G
   T
   R

表B有许多列(但这些列中没有一列会匹配表A第1列的值)。即

TableB
------
Column1:     Column2:      Column3:    
   65           xyz          fgdsg
   97           tmkl          sjg
   184          soi           trhd

我希望能够在查询中返回以下结果集:

 TabA.Column1:   TabB.Column1:   TabB.Column2:      TabB.Column3:
 -------------   ------------     ------------        ----------    
       A              65           xyz                  fgdsg
       A              97           tmkl                  sjg
       A              184          soi                   trhd
       G              65           xyz                  fgdsg
       G              97           tmkl                  sjg
       G              184          soi                   trhd
       T              65           xyz                  fgdsg
       T              97           tmkl                  sjg
       T              184          soi                   trhd
       R              65           xyz                  fgdsg
       R              97           tmkl                  sjg
       R              184          soi                   trhd

为了实现这一点,我想到将TableB x联合起来,其中x是TableA中的计数,但我不认为你可以在SQL中动态创建x个联合。我只是在寻找SQL代码的解决方案(它可能包含使用预定义的PL / SQL函数)。

2 个答案:

答案 0 :(得分:1)

只是CROSS JOIN不起作用?交叉联接会生成输入集的Cartesian product

SELECT * FROM TableA CROSS JOIN TableB

快乐编码

答案 1 :(得分:1)

你想要的是一个交叉连接。加入从表A到表B的所有内容。

SELECT * FROM TableA  
CROSS JOIN TableB