2012-04-26 7 views
-4

私は、次の表があります。MySQLの - カウントログインしたチームメンバー

 
CREATE TABLE members (
    member_id int(1) unsigned NOT NULL AUTO_INCREMENT, 
    logged_in tinyint(1) NOT NULL, 
    PRIMARY KEY (member_id), 
    UNIQUE KEY member_id (member_id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

INSERT INTO members (member_id, logged_in) VALUES 
    (1, 0), 
    (2, 1), 
    (3, 1), 
    (4, 1), 
    (5, 0); 

+-----------------------+ 
| members    | 
+-----------+-----------+ 
| member_id | logged_in | 
+-----------+-----------+ 
| 1   | 0   | 
| 2   | 1   | 
| 3   | 1   | 
| 4   | 1   | 
| 5   | 0   | 
+-----------+-----------+ 
 
CREATE TABLE team_members (
    team_id int(1) unsigned NOT NULL, 
    member_id int(1) unsigned NOT NULL, 
    PRIMARY KEY (team_id,member_id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

INSERT INTO team_members (team_id, member_id) VALUES 
    (1, 1), 
    (1, 2), 
    (2, 3), 
    (2, 4), 
    (3, 5); 

+---------------------+ 
| team_members  | 
+---------+-----------+ 
| team_id | member_id | 
+---------+-----------+ 
| 1  | 1   | 
| 1  | 2   | 
| 2  | 3   | 
| 2  | 4   | 
| 3  | 5   | 
+---------+-----------+ 

そして、これは私が達成するために必要な出力です:

 
+---------+-----------------------+ 
| team_id | logged_in_users_count | 
+---------+-----------------------+ 
| 1  | 1      | 
| 2  | 2      | 
| 3  | 0      | 
+---------+-----------------------+ 

を私は次のSQLをしようとしていますがクエリーは期待された出力を返していません。

 
SELECT 
    tm.team_id, 
    (SELECT COUNT(m.logged_in) FROM members m WHERE m.logged_in = 1) AS logged_in_users_count 
FROM 
    members m 
    INNER JOIN team_members tm ON (m.member_id = tm.member_id) 
GROUP BY 
    tm.team_id 
+0

お試しください! – Jeremy

+0

-1あなたに資格のある回答を与えるだけの情報がありません。あなたがログインしたときの情報の保存方法、試したことなど。完全な情報を表示すると、より良い結果が得られます。 – Justin

+1

スキーマと必要な出力がリストされているので、唯一の欠落しているステップはクエリを書くことです。ここには文字通り疑問はありません。だから、私はあなたがSQLを書くことになっていることを確認したいと思っています。はい、あなたはSQLを書くことができます。 –

答えて

2
 
SELECT 
team_members.team_id, 
COUNT(members.logged_in) 
FROM 
team_members LEFT JOIN members 
ON (team_members.member_id = members.member_id AND members.logged_in = 1) 
GROUP BY 
    team_members.team_id; 
関連する問題