MySQL - сбор связанных строк из другой таблицы - PullRequest
0 голосов
/ 27 декабря 2010

У меня есть три таблицы, которые похожи на:

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

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

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

Я пытаюсь выбрать набор из примерно 100 пользователей, а также взять все значки, которые у них есть, и показать их рядом с соответствующими пользователями.

Как лучше всего это сделать?

1 Ответ

3 голосов
/ 27 декабря 2010
 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;

Вышеприведенное вернет данные типа

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

Если вы считаете, что формат, возвращаемый 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

, это вернет несколько строк длятот же пользователь, если у пользователя несколько значков

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...