2013-10-21 67 views
2

嗨,我想知道是否可以在列記錄上執行'笛卡爾積'操作 。下面是這種情況:笛卡爾積 - 記錄單個表上的單個列

PIID1   PIID2 

PIID11   (Intially empty) 
PIID12   (Initially empty) 
PIID13   (Initially empty) 

所需的輸出(除去自我關係):

PIID1    PIID2 
-------- -------------------- 
PIID11   PPIID12 
PIID11   PPIID13 
PPIID12   PIID11 
PPIID12   PPIID13 
PPIID13   PPIID12 
PPIID13   PPIID11 

請發表您的解決方案。

+1

你用結果'SELECT'或者你想要更新表格(和添加的行)? –

+0

您是否需要所有標記DBS的解決方案? – DanFromGermany

+0

@ypercube:我想使用查詢來製作動態表更新 – vmaramreddy

回答

0

嘗試SELF JOIN

Select 

    a.pIID1 as PIID1, 
    b.pIID1 as PIID2 
    from 
    table a, 
    (Select pIID1 from table) b 
    WHERE a.pIID1<>b.PIID1 
+0

我看到一個連接但不是'JOIN'。 –

1

首先插入新行與自聯接:

INSERT INTO tableX 
    (piid1, piid2) 
SELECT 
    a.piid1, b.piid1 
FROM 
    tableX a 
    CROSS JOIN 
    tableX b 
WHERE 
    a.piid1 <> b.piid1 ; 

然後刪除原始行:

DELETE FROM tableX 
WHERE piid2 IS NULL ;