2013-05-25 3 views
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; 

я даже понятия не имею, что проблема с этим запросом

+0

Какова связь между группами 'и две другие таблицы? –

ответ

1

Прежде всего, ваша схема не нормируется. Это нарушает правило нормализации, называемое повторяющимися группами (первая нормальная форма (1NF). Из-за этого трудно даже определить, что это означает или что вы хотите.

Как таблицы групп могут иметь несколько строк с одинаковыми идентификаторами групп и Имя группы? (Groups.id 1 & 4). Очевидно, что эта таблица не является таблицей групп. Что это такое? Каково бы это ни было, каково его отношение к другим таблицам?