2016-01-15 4 views
0
структуры

базы данныхMysql Group путем подсчета Issue

таблицы 'заявители'

id  org_id  team_id 
    1   1   1 

Таблица 'команд

id  name 
    1  Test 

Таблица 'teams_members'

id  team_id  user_id 
    1   1    1 
    2   1    2 

users_playeraccounts Таблица» '

id  user_id  summoner_id   rank_solo 
    1   1     1     5 
    2   1     2     8 
    3   2     3     7 



select sum(rank_solo) as rank_sum, 
     max(rank_solo) as highest_rank, 
     count(tt.id) as members, 
     t.name, 
     o.team_id 
      from applicants o 
      join teams t on o.team_id = t.id 
      join teams_members tt on t.id = tt.team_id  
      join users_playeraccounts p on tt.user_id = p.user_id 
      where org_id = :org 
      group by team_id 

Это Offcourse дает мне результат, как

rank_sum  highest_rank  members name  team_id 

    20     8   3   Test   1 

Есть ли способ для меня, чтобы получить как количество членов с их playeraccounts ака

Если 1 пользователь имеет 2 это будет be 2

А также способ для меня сохранить его как 1, поэтому он буквально просто подсчитывает строки, найденные в командах_members, игнорируя записи в user_playeraccounts?

Я хочу получить как 2, так и 3 в результате моего запроса.

ответ

1

Вы хотите подсчитать отчетливое количество записей в tt.id, так что вы можете сделать это так:

SELECT ... COUNT(DISTINCT tt.id) AS distinct_members ... 

Вместо того, чтобы дать вам подсчет каждого строки, которая имеет непустое tt.id, вы получите количество уникальных значений.

+0

Забыл о различных. Спасибо за помощь мне! – battlenub

Смежные вопросы