![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
|||
|
|||
|
Цитата:
Спасибо огромное! Ваше решение более эллегантное, чем получилось мое.. я сделал через курсоры... =((( |