powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как "развернуть" записи в таблице
5 сообщений из 5, страница 1 из 1
Как "развернуть" записи в таблице
    #32022154
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую,

Есть таблица, содержащая несколько десятков строк:
create table test (t_id int primary key not null)
create table result (t_id int primary key not null)

необходимо пройтись по каждой записи таблицы и если
она удовлетворяет некому условию, то вставить во вторую
таблицу некий набор строк, являющийся производным от
данной записи. Если конкретнее, то в test храняться id
пользователей и групп, соответственно, если при пробежке
по test мы видим, что id соответствует группе, то в итоговую
таблицу result пишем id пользователей из данной группы, иначе
просто id пользователя (если не группа...)

Так вот, как это сделать без курсора? Или же курсор в данном случае
вполне приемлем? Возможно ли применить UDF?

Благодарю.
...
Рейтинг: 0 / 0
Как "развернуть" записи в таблице
    #32022177
Axl_Dead
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бред какой-то!
Как вы будете разделять id групп и id пользователей? В одной-то колонке? Зачем? И что это за пользователь без группы?
Если конкретно по вопросу: используйте подзапрос типа "INSERT result (id) SELECT id From test WHERE id=(условие)". И никаких курсоров не трэба!
...
Рейтинг: 0 / 0
Как "развернуть" записи в таблице
    #32022178
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по постановке задачи, вам должен подойти CASE. И без всяких курсоров вроде бы может получиться. А основа как предложил Axl_Dead.
...
Рейтинг: 0 / 0
Как "развернуть" записи в таблице
    #32022216
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо, необходим пример.

create table test (t_id int, t_type char(1))
go

insert into test values (1, 'u')
insert into test values (2, 'u')
insert into test values (3, 'u')
insert into test values (4, 'g')
insert into test values (5, 'g')
insert into test values (6, 'g')
go

create table results (r_id int)
go

надо в results получить список всех id пользователей,
соответствующих записям из test.

то есть, в results должны оказаться строки вида

1
2
3
(строки с id пользователей из группы с id = 4)
(строки с id пользователей из группы с id = 5)
(строки с id пользователей из группы с id = 6)

для извлечения списка пользователей, входящих в заданную
группу, применяется некий select (типа select user_id
from user_group where group_id = ?).
...
Рейтинг: 0 / 0
Как "развернуть" записи в таблице
    #32022221
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить, что пример с группами - частный случай. Интересует общее
решение, если оно есть. То есть, еще раз перефразируя: в таблице А в одну
кучу свалены ID разных по типу объектов (пользователей, групп и т.д.) с
указанием типа, конечно. Задача: получить список объектов заданного типа
на основе таблицы А. Правила, по которым получают список объектов, "входящих"
(или соответствующих) некому объекту X известны, но они могут быть сложными (т.е.
не в один запрос, как в случае получения списка пользователей для заданной группы).

Есть ли решение без курсора? Если есть, приведите, пожалуйста, пример кода...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как "развернуть" записи в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]