在SQL中查询多对多关系

时间:2014-12-18 02:26:44

标签: mysql

我有以下SQL关系

用户有很多游戏 游戏可能有用户

User
----
id |  name | age |
__________________
1  |  mike |  11 |
2  |  jeff |  12 |
3  |  jake |  31 |
4  |  lemd |  81 |

Game
-----
id |  name  | time  |
_____________________
1  |  froyo | 11:10 |
2  |  honey | 12:22 |
3  |  combb | 13:00 |
4  |  lolli | 14:00 |


User_Game
----------
| userid  | game_id |
 ___________________
|   1     |   2     |
|   2     |   2     |
|   3     |   1     |
|   4     |   3     |
|   1     |   2     |
|   2     |   4     |
|   2     |   1     |

对于每个用户都有办法获得 他们玩过的游戏列表,包括号码 每个用户参与的游戏。

修改

我试过了这个查询

Select User.name, User.age
  from User  
  inner join User_Game 
  on User.id=User_Game.userid;

但不确定如何将计数添加到它

1 个答案:

答案 0 :(得分:2)

SELECT 
    userid, 
    GROUP_CONCAT(game_id) as game_list,
    COUNT(*) as total_games
FROM 
    USER_GAME 
GROUP BY 
    userid;