2015-06-02 2 views
0

Итак, у меня есть таблица (Org_Contacts), которая свяжет таблицу контактов с организацией.SQL Increment на основе количества столбцов

В таблице в настоящее время установки, как это:

Organization ID (int) 
Contact ID (int) 
Priority (int) 

Там может быть несколько контактов к орг, и я хотел бы вставить контакты в и на основе того, сколько контактов назначены на орг Я хотел бы увеличьте приоритет для этого контакта.

Например, у меня есть две организации, ABC (ID: 90) и XYZ (ID: 91).

У меня есть 5 контактов для этих двух организаций. Джон (ID: 10), Jane (ID: 11), Steve (ID: 12), Боб (ID: 13), Дженнифер (ID: 14)

Когда я добавляю Джона АВС, как контакта я хочу приоритет, чтобы начать на 1

Org_Contacts 
------------ 
90|10|1 

Далее я добавлю Джейн к тому же орг как контакт вызывает ее приоритет быть 2

Org_Contacts 
------------ 
90|10|1 
90|11|2 

Fol мычание, который будет добавлен Стив, но он будет контактом для XYZ

Org_Contacts 
------------ 
90|10|1 
90|11|2 
91|12|1 

Боб будет рядом и будет добавлен к ABC

Org_Contacts 
------------ 
90|10|1 
90|11|2 
91|12|1 
90|13|3 

и последний является Дженнифер X

Org_Contacts 
------------ 
90|10|1 
90|11|2 
91|12|1 
90|13|3 
91|14|2 

Я пытаюсь выполнить все это в инструкции insert. Я думаю, может быть, в подзапросе, который использует подсчет, но я не уверен в лучшем подходе.

ответ

0

Вместо того, чтобы поддерживать приоритет в таблице может быть проще вычислить его на лету, используя ROW_NUMBER (вы не указали свои СУБД, но большинство поддерживает это):

select 
    Organization, 
    Contact, 
    ROW_NUMBER() 
    OVER (PARTITION BY Organization 
     ORDER BY Contact) AS Priority 
from tab 
Смежные вопросы