2010-12-27 7 views
0

私のような3つのテーブルを持っている:MySQLの - 別のテーブルから関連する行を収集

users 
--------------- 
id 
etc... 

badges 
--------------- 
id 
title 
etc... 

badges_data 
--------------- 
badge_id 
user_id 

私は約100ユーザーのセットを選択されませんし、また、すべてのバッジをつかむしようとしている彼らそれぞれのユーザーの横に表示します。

これについてはどのような方法が最適ですか?

答えて

3
select 
    users.*, 
    group_concat(badges.id, '=', badges.title separator ';') as badges_info 
from users 
left join badges_data on badges_data.user_id=users.id 
inner join badges on badges.id=badges_data.badge_id 
group by users.id 
limit 100; 

場合は、GROUP_CONCATで返される形式は読みにくいと思われる場合は上記/パース

select 
    users.*, 
    badges.* 
from users 
left join badges_data on badges_data.user_id=users.id 
inner join badges on badges.id=badges_data.badge_id 

user.*, 
badges_id=title;badges_id=title; ... 

のようなデータを返します。これは、同じユーザーに対して複数の行を返します。ユーザーは複数のバッジを持っています

+0

最初の1つは、おかげで、ありがとう! –