Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите пожалйста с запросом
|
|||
|---|---|---|---|
|
#18+
Есть таблица: a marsrut b -------------------- первый первый первый второй второй третий третий третий То есть это таблица маршрутов. Поле marshrut идентифицрует маршрут. Поле а обозначает номер операции, причем для каждого маршрута он нумеруется с 10 с шагом 10. Поле b указывает на следующую оперцию ДАННОГО маршрута. Если это последняя операция в маршруте - ставится 0. Можно ли только на SQL заполнить поля a и и следующим образом ? a marsrut b -------------------- 10 первый 20 20 первый 30 30 первый 0 10 второй 20 20 второй 0 10 третий 20 20 третий 30 30 третий 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2002, 08:57 |
|
||
|
Помогите пожалйста с запросом
|
|||
|---|---|---|---|
|
#18+
IMHO т.к. нет идентификатора записи, то только в цикле/курсоре ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2002, 09:14 |
|
||
|
Помогите пожалйста с запросом
|
|||
|---|---|---|---|
|
#18+
Хорошо, это не так уж и страшно. Допустим структура будет такой: id a marsrut b -------------------- 1 первый 2 первый 3 первый 4 второй 5 второй 6 третий 7 третий 8 третий Теперь это возможно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2002, 09:31 |
|
||
|
Помогите пожалйста с запросом
|
|||
|---|---|---|---|
|
#18+
-- "Нет таких крепостей, перед которыми остановились бы большевики" В.И.Ленин set nocount on declare @t table(id int identity, a int null, m varchar(15), b int null) insert @t(m) select 'первый' insert @t(m) select 'первый' insert @t(m) select 'первый' insert @t(m) select 'второй' insert @t(m) select 'второй' insert @t(m) select 'третий' insert @t(m) select 'третий' insert @t(m) select 'третий' update @t set a=(select count(*) from @t t2 where t1.m=t2.m and t1.id>=t2.id)*10 from @t t1 update @t set b=a+10 update @t set b=0 from @t t1 where not exists (select * from @t t2 where t1.m=t2.m and t1.id<t2.id) select * from @t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2002, 10:23 |
|
||
|
Помогите пожалйста с запросом
|
|||
|---|---|---|---|
|
#18+
Можно и одни запросом create table #temp1(id int identity , a int, marsrut nvarchar(50), b int) insert #temp1(marsrut) values(N'первый') insert #temp1(marsrut) values(N'первый') insert #temp1(marsrut) values(N'первый') insert #temp1(marsrut) values(N'первый') insert #temp1(marsrut) values(N'второй') insert #temp1(marsrut) values(N'второй') insert #temp1(marsrut) values(N'третий') insert #temp1(marsrut) values(N'третий') insert #temp1(marsrut) values(N'третий') insert #temp1(marsrut) values(N'четвертый') declare @step int set @step = 10 update #temp1 set a = b.a, b = b.b from #temp1 a inner join (select id, (cnt1+1) * @step AS a, CASE WHEN cnt2 > 0 THEN (cnt1+1)* @step+@step ELSE 0 END AS b from (select id, (SELECT COUNT(*) FROM #temp1 b WHERE b.marsrut = a.marsrut and b.id < a.id) AS cnt1, (SELECT COUNT(*) FROM #temp1 b WHERE b.marsrut = a.marsrut and b.id > a.id) AS cnt2 from #temp1 a ) AS a ) AS b on b.id = a.id select * from #temp1 a drop table #temp1 А вот что так будет быстрее - не уверен. Можете поэксперементировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2002, 10:46 |
|
||
|
Помогите пожалйста с запросом
|
|||
|---|---|---|---|
|
#18+
А я бы пересмотрел состав и структуру таблиц. Это же не только нарушение 3NF, это еще и 3 килограмма трудноусваяиваемых траблов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2002, 17:21 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32025684&tid=1823454]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 343ms |

| 0 / 0 |
