2016-05-13 62 views
0

我需要根據11個外鍵(1-11)的排列將用戶排序爲一個組。基於特定大小排列的排序

我有一個BIG_TABLE:

FK | User_ID   FK | User_ID 
1 | a     4 | c 
5 | a     1 | c 
3 | b     5 | c 
9 | b     11 | c 
7 | b     2 | c 
  • 第1組(G1)將包括(在本實施例中用戶一個)大小爲2的任何排列
  • G2將包括尺寸3(用戶的任何排列b)
  • G3將包括大小爲4的至多大小的11(用戶C)的任一置換

的有效排列將被存儲在separa te表,所有大小爲2的排列的表,另一個用於大小爲3的排列等。

如何檢查用戶是否滿足適合組的要求?

(效率是可取的,但工作方案是目標)。對不起,我沒有任何代碼,但我已經足夠新到SQL,我不知道從哪裏開始解決這個問題。

編輯:還有其他組和更多的外鍵,G1-G3只適用於FK的1-11。

這個問題我最麻煩的是我如何比較多個FK到一個單一的排列。例如,我怎麼能比較

1 | a and 3 | a 

到算法有效排列的列表?

+0

你在找什麼結果? –

+0

@Ridiculon你真的想試圖展示至少一些你自己解決這個問題的嘗試。請參閱[如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)和[mcve] – Tibrogargan

+0

這是一個更大的問題,我堅持,我已剝奪一部分儘可能下降。整個問題涉及更多(也更復雜)的團隊,但我知道如果我能夠得到這方面的答案,我將能夠將其應用於問題的其餘部分。部分問題是我對ddl語句之外的sql知之甚少,我正在尋找一個有更多經驗的人指點我正確的方向。 – Ridiculon

回答

0

如果你只是想算外鍵的數量,使用count(*)count(distinct)

select user_id, count(*) 
from big_table 
group by user_id; 

這會給外鍵的數量爲每個用戶(假設表中沒有重複)。

+0

我應該提到1-11外鍵不是列中唯一的外鍵。將其添加到原始問題 – Ridiculon