2016-05-13 28 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