Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как "развернуть" записи в таблице
|
|||
|---|---|---|---|
|
#18+
Приветствую, Есть таблица, содержащая несколько десятков строк: 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? Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 08:53 |
|
||
|
Как "развернуть" записи в таблице
|
|||
|---|---|---|---|
|
#18+
Бред какой-то! Как вы будете разделять id групп и id пользователей? В одной-то колонке? Зачем? И что это за пользователь без группы? Если конкретно по вопросу: используйте подзапрос типа "INSERT result (id) SELECT id From test WHERE id=(условие)". И никаких курсоров не трэба! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 10:31 |
|
||
|
Как "развернуть" записи в таблице
|
|||
|---|---|---|---|
|
#18+
Судя по постановке задачи, вам должен подойти CASE. И без всяких курсоров вроде бы может получиться. А основа как предложил Axl_Dead. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 10:37 |
|
||
|
Как "развернуть" записи в таблице
|
|||
|---|---|---|---|
|
#18+
Видимо, необходим пример. 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 = ?). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 13:57 |
|
||
|
Как "развернуть" записи в таблице
|
|||
|---|---|---|---|
|
#18+
Забыл добавить, что пример с группами - частный случай. Интересует общее решение, если оно есть. То есть, еще раз перефразируя: в таблице А в одну кучу свалены ID разных по типу объектов (пользователей, групп и т.д.) с указанием типа, конечно. Задача: получить список объектов заданного типа на основе таблицы А. Правила, по которым получают список объектов, "входящих" (или соответствующих) некому объекту X известны, но они могут быть сложными (т.е. не в один запрос, как в случае получения списка пользователей для заданной группы). Есть ли решение без курсора? Если есть, приведите, пожалуйста, пример кода... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2002, 14:05 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32022177&tid=1824054]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 376ms |

| 0 / 0 |
