Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Всем привет Помогите написать запрос для такой задачи: Есть таблица Table ( id int, ClassId int, Type int, Instance int ), где id - сквозной Id, ClassId - id совокупности, Type - тип объекта, Instance - Id объекта id ClassId Type Instance (1, 4, 2002, 5) (2, 4, 2001, 6) (3, 4, 2000, 9) (4, 5, 2001, 1) (5, 5, 2004, 1) (6, 6, 2000, 5) (7, 7, 2004, (8, 7, 2005, 9) (9, 7, 2006, (10, 7, 2006, ... Необходимо для заданной совокупности пар Type и Instance (например, {2005:56; 2003:3; 2001:34}) найти ClassId; если его нет - вставить указанную совокупность в таблицу и вернуть новый ClassId. Необходимо найти самое быстрое решение, поскольку в таблице Table может быть несколько десятков млн. записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2002, 10:06 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
это можно реализовать примерно такой процедурой(если речь идет о MSSQL): create procedure p @T int, @I int as if not exists( select Classid from table where Type=@T and Instance=@I) begin insert into table values (значение id,значение Classid,@T,@I) select значение Classid end else select Classid from table where Type=@T and Instance=@I ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2002, 10:46 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
это можно реализовать примерно такой процедурой(если речь идет о MSSQL): create procedure p @T int, @I int as if not exists( select Classid from table where Type=@T and Instance=@I) begin insert into table values (значение id,значение Classid,@T,@I) select значение Classid end else select Classid from table where Type=@T and Instance=@I ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2002, 10:48 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Нет, на входе процедуры не одна пара значений, а произвольное количество Т.е. на входе должна быть таблица совокупностей: (2000, 45) (2001, 46) (2003, 55) или (2000, 45) или (2000, 45) (2001, 46) у всех этих совокупностей должен быть разный ClassId ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2002, 10:52 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Совсем забыл - SQL 7.0 Хотя буду рад любому решению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2002, 11:28 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
SergSuper, Garya, Glory и другие профи, вся надежда на вас Неужели ни у кого не возникало подобной задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2002, 12:05 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Вызывает вопросы вот это утверждение >Нет, на входе процедуры не одна пара значений, а произвольное количество >Т.е. на входе должна быть таблица совокупностей Что значит произвольное ? Таблица как входной параметр ? Или перед вызовом процедуы имеется уже таблица, куда занесено это "произвольное количество пар значений" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2002, 12:57 |
|
||
|
Запрос
|
|||
|---|---|---|---|
|
#18+
Glory Да, перед вызовом процедуы уже имеется таблица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2002, 02:45 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32021797&tid=1824129]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 361ms |

| 0 / 0 |
