1

我有 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;

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

4

1 回答 1

1

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

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

于 2013-05-25T14:38:05.413 回答