2011-04-15 86 views
5

在一個網站,我一直在工作允許用戶將數據提交到表中,而當他們提交的數據,他們被要求一個合作伙伴的名字,因爲兩個人在獲取工作數據。我正在嘗試創建一個高分表,列出頂級合作伙伴,AKA合作伙伴和提交者的組合(非排列),最常出現在桌面上。GROUP組合,排列組合不

group命令的偉大工程,但我已經打與組合/置換問題一點障礙。目前,當我對它們進行分組時,它僅檢查提交者和合作夥伴的排列組合,而不是組合。問題是,經常合夥選擇一個人是提交者之間交替,而另一個是合作伙伴,所以我有我可以拉組的實際上是兩個可能的排列。

目前我有代碼,這將拉動發佈和合作夥伴排列的一個高評分表,以及合作伙伴和發佈者排列的另一個高評分表。我需要加入這些結果(可能取消分組和非排序)時的合作伙伴=提交或提交=合作伙伴,然後將它們分組和順序,然後按降序排列。

SELECT submitter, partner, COUNT(*) FROM submissions GROUP BY submitter, partner; 

上面的代碼將返回表提交和合作夥伴的具體置換的計數,但如果相同的兩個人是尋找合作伙伴和提交,剛換,他們不計爲同一組。

任何人都知道這樣做的代碼?

回答

6

不是最漂亮的解決方案,但它確實爲你提供你想要的答案:

SELECT Person1, Person2, COUNT(*) FROM (
    SELECT 
     CASE WHEN submitter < partner THEN submitter ELSE partner END AS Person1, 
     CASE WHEN submitter >= partner THEN submitter ELSE partner END AS Person2 
    FROM submissions 
) Q 
GROUP BY Person1, Person2 
+0

哦,那是美麗的,它只是恰巧很好地適合我目前的PHP,謝謝! – user709246 2011-04-15 06:29:52