Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посоветуйте, как сделать запрос 
V
    Опции темы
cheezy
  Дата 13.10.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.6.2007

Репутация: 1
Всего: 1



Привет всем. У меня вопрос. Есть три банальные таблицы: Users (id, login), Groups (id, name), Users_Groups (id, user_id, group_id). Нужно сделать вывод списка пользователей, в каждой строке списка - логин пользователя и группы, к которым он принадлежит.

Пример заполнения таблиц:
Users
id | login
1 | Вася
2 | Петя
3 | Коля
Groups
id | name
1 | Admins
2 | Moders
3 | Users
4 | Ban
Users_groups
id | user_id | group_id
1 | 1 | 1
2 | 2 | 3
3 | 1 | 2
4 | 3 | 3
5 | 3 | 4

Пример вывода данных:
Пользователь | Членство в группах
Вася | Admins; Moders;
Петя | Users;
Коля | Users; Ban;

Так вот, как сделать такое в один запрос? А то приходится загонять данные в массив, а потом уже из php крутить его так, как душе угодно.

Это сообщение отредактировал(а) cheezy - 13.10.2007, 23:14
PM MAIL   Вверх
cheezy
  Дата 14.10.2007, 00:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.6.2007

Репутация: 1
Всего: 1



Не поверите! =) Я сидел над этой проблемой кучу времени, а нашел решение сразу после создания этой темы! =) Вот:
Код

SELECT
  u.`id` AS id,
  u.`login` AS login,
  GROUP_CONCAT(g.`name` SEPARATOR ', ') AS in_groups
FROM
  `users` AS u,
  `users_groups` AS ug,
  `groups` AS g
WHERE
  u.`id` = ug.`user_id`
  AND g.`id` = ug.`group_id`";
 GROUP BY u.`login` ORDER BY u.`login`;


Урра!  smile В результате получаем result в три колонки: id, login и in_groups - перечисленные через запятую имена групп, в которые входит пользователь! Можно прикрутить еще много чего, если будут вопросы  у кого - постараюсь ответить! =)

Добавлено через 3 минуты и 26 секунд
Не поверите! =) Я сидел над этой проблемой кучу времени, а нашел решение сразу после создания этой темы! =) Вот:
Код

SELECT
  u.`id` AS id,
  u.`login` AS login,
  GROUP_CONCAT(g.`name` SEPARATOR ', ') AS in_groups
FROM
  `users` AS u,
  `users_groups` AS ug,
  `groups` AS g
WHERE
  u.`id` = ug.`user_id`
  AND g.`id` = ug.`group_id`";
 GROUP BY u.`login` ORDER BY u.`login`;


Урра!  smile В результате получаем result в три колонки: id, login и in_groups - перечисленные через запятую имена групп, в которые входит пользователь! Можно прикрутить еще много чего, если будут вопросы  у кого - постараюсь ответить! =)
PM MAIL   Вверх
Папараццы
Дата 15.10.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Your SQL query was useful for me.. Thanks 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
cheezy
Дата 15.10.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.6.2007

Репутация: 1
Всего: 1



You are welcome.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.