2010-12-27 2 views
0

내가 좋아하는 세 개의 테이블을 가지고 :MySQL을 - 다른 테이블에서 관련 행을 수집

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

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

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

내가 약 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; ... 

같은

답변

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; 

위의 반환 데이터 사용자가 여러 배지를 가지고 있습니다

+0

첫 번째 트릭을 했어, 고마워! –

관련 문제