Автоинкремент на основе набора других столбцов - PullRequest
0 голосов
/ 16 мая 2010

У меня есть настольный курс, и каждый курс имеет много ресурсов.

Course
==========
course_id

Resource
==========
course_id
number

Я хочу что-то вроде отдельного автоинкремента для каждого course_id. Или, другими словами, я хочу автоматически перечислить ресурсы для данного курса. Например, таблица ресурсов может выглядеть примерно так:

course_id | number
==================
1         | 1
1         | 2
2         | 1
1         | 3
1         | 4
2         | 2
2         | 3

и так далее. Я хочу сделать это в SQL , используя IBM DB2.

1 Ответ

0 голосов
/ 16 мая 2010

Вы должны позволить Resource выбрать свои собственные идентификаторы ...

resource_id | course_id
=======================
1           | 1
2           | 1
3           | 2
4           | 1
5           | 1
6           | 2
7           | 2

... и узнать ранг с помощью запросов:

SELECT course_id,
       (SELECT COUNT(*)
          FROM Resource
         WHERE resource_id < r.resource_id
       ) + 1 AS rank
  FROM Resource r

Это, несомненно, больше работы для оптимизатора, но значительно упростит жизнь в любом другом отношении (например, обработка удалений).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...