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

まず、スキーマが正規化されていません。これは、繰り返しグループ (第 1 正規形 (1NF)) と呼ばれる正規化規則に違反しています。このため、それが何を意味するのか、何を望んでいるのかを判断することさえ困難です。

グループ テーブルに同じ groupId とグループ名を持つ複数の行を含めるにはどうすればよいですか? (groups.id 1 & 4)。明らかに、この表はグループの表ではありません。それは何ですか?それが何であれ、他のテーブルとの関係は何ですか?

于 2013-05-25T14:38:05.413 に答える