群体中的关系(+用户和朋友)

时间:2013-05-25 14:33:04

标签: sql database oracle

我有3张这样的表

Users table
    id    | name
    -------------
    1     |  s1
    2     |  s2
    3     |  s3
    4     |  s4
    5     |  s5
    6     |  s6

friends table
friendID | user_a | user_b
--------------------
1        |   1    |   2
2        |   3    |   1
3        |   4    |   2
4        |   1    |   3

groups table 
id       | groupid | groupname
------------------------------
1        |   1    |     in01
2        |   2    |     in02
3        |   3    |     in03
4        |   1    |     in01

我想运行此查询:在任何群组之间的大多数关系? 这是我当前的查询,但它不起作用

SELECT g.groupname, count(f.FriendId) as kol
FROM users a
left join groups g on g.id=a.id
left join friends f on f.friendid=a.id
group by kol;

我甚至不知道,这个查询有什么问题

1 个答案:

答案 0 :(得分:1)

首先,您的架构未规范化。它违反了称为重复组的规范化规则(第一范式(1NF)。因此很难确定它意味着什么或你想要什么。

组表如何具有多个具有相同groupId和Group名称的行? (groups.id 1& 4)。显然,这个表不是一个组表。之后怎么样了?不管它是什么,它与其他表的关系是什么?