2013-07-24 37 views
1
**ID** | **REL_ID** | **E** 
    1 |  1  | 10 
    2 |  1  | 30 
    3 |  1  | 8 
    4 |  1  | 42 
    5 |  1  | 57 

我需要用立方體可以使用組,但顯然,我必須得到所有可能的組合並不存在於MySQL的MySQL的 - 羣等價BY CUBE

其實(10 + 30 + 8 + 42 + 3),(10 + 30 + 8 + 42),(10 + 30 + 8),(10 + 30),(10),(10 + 30), ,(30 + 8 + 42 + 3),...
見?

感謝提前:) 有一個好的一天

+0

我不認爲你可以得到這與一個單一的查詢。你可以考慮編寫一個邏輯程序。只是一個提示 – Akhil

+0

Wath你是指按立方體分組,是數學函數還是三個表的乘法? Wath請求你有沒有試過? –

回答

1

幾個月後......我可以爲你帶來每一個不同的總數,但就是這樣。

CREATE TABLE combos 
(ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,REL_ID INT NOT NULL 
,E INT NOT NULL 
); 

INSERT INTO combos VALUES 
(1,1,10), 
(2,1,30), 
(3,1,8), 
(4,1,42), 
(5,1,57); 

SELECT DISTINCT n1.e 
       + CASE WHEN n2.id IN(n1.id) THEN 0 ELSE n2.e END 
       + CASE WHEN n3.id IN(n2.id,n1.id) THEN 0 ELSE n3.e END 
       + CASE WHEN n4.id IN(n3.id,n2.id,n1.id) THEN 0 ELSE n4.e END 
       + CASE WHEN n5.id IN(n4.id,n3.id,n2.id,n1.id) THEN 0 ELSE n5.e END x 
    FROM combos n1 
    JOIN combos n2 
    ON n2.id <= n1.id 
    JOIN combos n3 
    ON n3.id <= n2.id 
    JOIN combos n4 
    ON n4.id <= n3.id 
    JOIN combos n5 
    ON n5.id <= n3.id 
ORDER 
    BY x; 

+-----+ 
| x | 
+-----+ 
| 8 | 
| 10 | 
| 18 | 
| 30 | 
| 38 | 
| 40 | 
| 42 | 
| 48 | 
| 50 | 
| 52 | 
| 57 | 
| 60 | 
| 65 | 
| 67 | 
| 72 | 
| 75 | 
| 80 | 
| 82 | 
| 87 | 
| 95 | 
| 97 | 
| 99 | 
| 107 | 
| 109 | 
| 129 | 
+-----+ 
    25 rows in set (0.00 sec)