2013-06-22 142 views
2

我必须使用PL/SQL来查找DB中三个表的组合。对于intance,考虑下面的抽象表(A,B,C代表科拉姆名称和V1,V2,V3 ......代表列值):如何在pl/sql中获得一个表的三列组合?

-+-----+-----+-----+- 
-| A | B | C |- 
-+-----+-----+-----+- 
-| v1 | v2 | v3 |- 
-+-----+-----+-----+- 
-| v4 | v5 | v6 |- 
-+-----+-----+-----+- 
-| : | : | : |- 
    :  :  : 

我的模块应该产生这三种的每个组合列A,B,C,如:

v1 v2 v3 
v1 v2 v6 
v1 v5 v3 
v1 v5 v6 
........ 
v4 v2 v3 
v4 v2 v6 
v4 v5 v3 
v4 v5 v6 
........ 
: : : 
: : : 

等等。

任何人都可以建议此过程最有效的算法?谢谢。

回答

3

笛卡尔连接会产生您正在寻找的所有组合。由于所有三列都在同一个表格中,因此您需要将表格暂时分成三部分:

SELECT * 
    FROM (SELECT a FROM mytable), 
     (SELECT b FROM mytable), 
     (SELECT c FROM mytable); 
相关问题