Задать вопрос
@shuhratjon
Программист разработчик.

Нужно улучшить sql запрос.?

У меня есть такие таблицы:
Группы:
id
name

и
Участники группы:
id
groupId
memberId

У нас имеется id пользователя.
Нужно получить список групп на которые он подписан с количеством подписчиков группы и имени группы.
У меня есть такой sql запрос для получения списка групп но не могу получить количество подписчиков групп:

SELECT g.gid, g.name
  FROM groups g, groupmembers gm
  WHERE gm.memberId = 1 AND g.gid = gm.groupId
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
@bizon2000
Java-программист
SELECT g.gid, g.name, (SELECT COUNT(*) FROM groupmembers m WHERE m.gid = g.groupId) AS CoungGM
  FROM groups g, groupmembers gm
  WHERE gm.memberId = 1 AND g.gid = gm.groupId
Ответ написан
Комментировать
@shuhratjon Автор вопроса
Программист разработчик.
Нашел вот такое решения:
SELECT g.gid, g.name, count(1) AS 'membersCount'
FROM groups g, groupmembers gm
WHERE g.gid in(SELECT groupId FROM groupmembers WHERE memberId = 1)
AND g.gid = gm.groupId
GROUP BY g.gid
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
k1lex
@k1lex
Программист торг. сети. C# (WPF, WinForms), T-SQL
Список групп получайте вот так
select 
      g.gid, 
      g.name
from  groups g
inner join  groupmembers gm ON gm.memberId = 1 AND g.gid = gm.groupId


Количество подписчиков для каждой группы:
select 
      g.name, 
   COUNT(gm.id) as CountGM
from  groups g
inner join  groupmembers gm ON gm.memberId = 1 AND g.gid = gm.groupId
group by g.name

И лучше уделите пару часов учебнику по SQL
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы