- MySQL заявка-загадка
WT форуми -> PHP MySQL ASP.NET -> MySQL заявка-загадка
Създайте нова тема Напишете отговор 
Автор Съобщение
flafy
Нов
Нов

Регистриран на: 22/09/2013 6:36 pm

Support: 6
Bonus: 12
Мнения: 57
Мнение 15/06/2017 3:56 pm     MySQL заявка-загадка Отговорете с цитат


Здравейте, имам 2 таблици - groups и members със съответната информация в тях:
- за groups :
MySQL заявка-загадка
- за members :
MySQL заявка-загадка

Със следващата заявка избирам всички групи и броя членове в съответната група
SQL code:
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 
и получавам следния резултат :
MySQL заявка-загадка
Тук всичко мисля, че е наред. Проблема ми е, че се опитвам да избера всички групи, както и общия брой членове в съответната група, в които даден потребител е член. Например искам да видя потребител с ID 1, в кои групи членува и съответно в тази група колко общо членове има. Правя заявката така:
SQL code:
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
добавил съм WHERE clause, но ми извежда грешни резултати.
MySQL заявка-загадка.
Ако някой има идея как трябва да стане нека сподели Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 338
Bonus: 674
Мнения: 2539
Мнение 15/06/2017 4:07 pm      Отговорете с цитат


COUNT-a се смята след като е направен сета от информация, затова имаш само по един member, ти.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
flafy
Нов
Нов

Регистриран на: 22/09/2013 6:36 pm

Support: 6
Bonus: 12
Мнения: 57
Мнение 15/06/2017 6:20 pm      Отговорете с цитат


Ако съм разбрал правилно трябва да COUNT-на вече избрани резултати (сигурно звуча смешно Very Happy) . Пробвах така :
SQL code:
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
, но ми извежда същите резултати.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Fakeheal
Support
Support

Регистриран на: 17/04/2010 8:37 am

Support: 338
Bonus: 674
Мнения: 2539
Мнение 15/06/2017 6:24 pm      Отговорете с цитат


С вложен селект ще стане:


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
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение Изпрати мейла
flafy
Нов
Нов

Регистриран на: 22/09/2013 6:36 pm

Support: 6
Bonus: 12
Мнения: 57
Мнение 15/06/2017 6:34 pm      Отговорете с цитат


Ами не знам какво да кажа. Сигурно щях да си блъскам главата още няколко дни, а можеше и въобще да не стигна до решение Very Happy. Благодаря ти за помощта Smile
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:    
Създайте нова тема   Напишете отговор    web-tourist.net Форуми -> PHP MySQL ASP.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1


 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети