MySQL заявка-загадка

flafy

Registered
Здравейте, имам 2 таблици - groups и members със съответната информация в тях:
- за groups :
EBDNrjvvQcC7RDcfEFnesw.png

- за members :
9O_8rqEkR1SnNXTO_fQfow.png


Със следващата заявка избирам всички групи и броя членове в съответната група
[sql]SELECT g . * , COUNT( m.user_id ) AS members FROM groups g LEFT JOIN members m ON g.id = m.group_id GROUP BY g.id [/sql] и получавам следния резултат :
8GafTLwmQLqjD7o-TTSFrQ.png

Тук всичко мисля, че е наред. Проблема ми е, че се опитвам да избера всички групи, както и общия брой членове в съответната група, в които даден потребител е член. Например искам да видя потребител с ID 1, в кои групи членува и съответно в тази група колко общо членове има. Правя заявката така:
[sql]SELECT g . * , COUNT( m.user_id ) AS members FROM groups g LEFT JOIN members m ON g.id = m.group_id WHERE m.user_id = '1' GROUP BY g.id[/sql] добавил съм WHERE clause, но ми извежда грешни резултати.
Xsbb-70TQT2Pq3mjY5MUkA.png
.
Ако някой има идея как трябва да стане нека сподели :)
 
Ако съм разбрал правилно трябва да COUNT-на вече избрани резултати (сигурно звуча смешно :D) . Пробвах така : [sql]SELECT q.name, COUNT(q.user_id) FROM (SELECT g.*,m.* FROM groups g LEFT JOIN members m ON g.id = m.group_id WHERE m.user_id = '1') AS q GROUP BY q.id[/sql], но ми извежда същите резултати.
 
С вложен селект ще стане:

Код:
SELECT g . *, 
       (SELECT Count(members.user_id) 
        FROM   members 
        WHERE  members.group_id = g.id) AS members 
FROM   groups g 
       LEFT JOIN members m 
              ON g.id = m.group_id 
WHERE  m.user_id = '1' 
GROUP  BY g.id
 
Ами не знам какво да кажа. Сигурно щях да си блъскам главата още няколко дни, а можеше и въобще да не стигна до решение :D. Благодаря ти за помощта :)
 

Горе