![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Господа!
Есть две таблицы: -users id, user_name -roles id, user_id, role в таблице roles может быть несколько записей, в зависимости от количества ролей. хочу чтобы запрос выводил user_name, список ролей через запятую. |
#2
|
|||
|
|||
![]() не вижу проблемы: SQL пиши и юзай
типа такого будет select * from users u,roles r where u.id = r.user_id group by u.id будет у тебя список сгруппированный по юзерам, потом разбираешь его как хочешь |
#3
|
|||
|
|||
![]() Цитата:
охота именно через запятую, перечисление ролей, так то понятно, что можно |
#4
|
|||
|
|||
![]() Цитата:
Так можно только через процедуры, что-то вроде этого Код:
CREATE PROCEDURE GetTextRole ( userid integer) returns ( roles_text varchar(200)) as declare variable rolename varchar(50); begin roles_text=''; for select role from roles where roles.iser_id=:userid into :rolename do begin roles_text=roles_text || :rolename || ','; end suspend; end^ Затем в запросе вызывать: select users.id, users.user_name, gettextrole(users.id) from users Последний раз редактировалось Phedor, 06.08.2008 в 11:36. |
#5
|
|||
|
|||
![]() Цитата:
Спасибо огромное! Ваше решение более эллегантное, чем получилось мое.. я сделал через курсоры... =((( |