Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проблема обновления 2 таблицы  [new]
yaxta
Member

Откуда: азербайджан,баку
Сообщений: 518
привет ребята

у меня ест таблица

create table #t1
(
 gr char(10),
 muh int,
 mes int,
 less_id int
)

insert #t1 values('a1',4,2,2)
insert #t1 values('a1',2,2,1)
insert #t1 values('a1',2,1,6)
insert #t1 values('a1',3,1,5)
insert #t1 values('a1',3,2,3)
insert #t1 values('a1',2,2,4)



create table #t2
 (gr char(10),d_id int,start_time time,end_time time,less_id int,last_week_less int)

  insert into #t2 (gr,d_id,start_time,end_time) values('a1',1,'12:30','14:05')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',1,'14:15','15:50')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',1,'16:00','17:35')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',1,'17:45','19:20')

  insert into #t2 (gr,d_id,start_time,end_time) values('a1',2,'12:30','14:05')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',2,'14:15','15:50')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',2,'16:00','17:35')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',2,'17:45','19:20')

  insert into #t2 (gr,d_id,start_time,end_time) values('a1',3,'12:30','14:05')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',3,'14:15','15:50')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',3,'16:00','17:35')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',3,'17:45','19:20')

  insert into #t2 (gr,d_id,start_time,end_time) values('a1',4,'12:30','14:05')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',4,'14:15','15:50')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',4,'16:00','17:35')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',4,'17:45','19:20')

  insert into #t2 (gr,d_id,start_time,end_time) values('a1',5,'12:30','14:05')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',5,'14:15','15:50')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',5,'16:00','17:35')
  insert into #t2 (gr,d_id,start_time,end_time) values('a1',5,'17:45','19:20')

  select *from #t1


  gr    	muh	mes	less_id
a1        	4	2	2
a1        	2	2	1
a1        	2	1	6
a1        	3	1	5
a1        	3	2	3
a1        	2	2	4

  select* from #t2


gr	        d_id	start_time	             end_time	         less_id	last_week_less

a1        	1	12:30:00.0000000	14:05:00.0000000	NULL	NULL
a1        	1	14:15:00.0000000	15:50:00.0000000	NULL	NULL
a1        	1	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	1	17:45:00.0000000	19:20:00.0000000	NULL	NULL
a1        	2	12:30:00.0000000	14:05:00.0000000	NULL	NULL
a1        	2	14:15:00.0000000	15:50:00.0000000	NULL	NULL
a1        	2	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	2	17:45:00.0000000	19:20:00.0000000	NULL	NULL
a1        	3	12:30:00.0000000	14:05:00.0000000	NULL	NULL
a1        	3	14:15:00.0000000	15:50:00.0000000	NULL	NULL
a1        	3	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	3	17:45:00.0000000	19:20:00.0000000	NULL	NULL
a1        	4	12:30:00.0000000	14:05:00.0000000	NULL	NULL
a1        	4	14:15:00.0000000	15:50:00.0000000	NULL	NULL
a1        	4	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	4	17:45:00.0000000	19:20:00.0000000	NULL	NULL
a1        	5	12:30:00.0000000	14:05:00.0000000	NULL	NULL
a1        	5	14:15:00.0000000	15:50:00.0000000	NULL	NULL
a1        	5	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	5	17:45:00.0000000	19:20:00.0000000	NULL	NULL



и мне нужно обновить столбцы таблицы # T2 less id , last_week less c таблицы # T1 где #t2. gr= #t1. gr

но ест интересное ограничния сдес

когда muh столбец # t1 = 4, то мы должны обновить 2 колонки в #table2 и должны отличаться в # t1 колонке d_id например после выходного результате должен дать


gr	        d_id	start_time	               end_time	            less_id  last_week_less
   a1        	1	12:30:00.0000000	14:05:00.0000000	2       NULL

  a1        	2	12:30:00.0000000	14:05:00.0000000	2       NULL



сдес нашим подсчетам update= 2 (4/2)
и d_id нужны разные
и если столбец = 3 (3/2) будет muh
то мы должны обновить 1 столбцов и 1 в на last_week_less обновления
после выхода нужно дать

gr	        d_id	start_time	               end_time	            less_id  last_week_less
  a1        	1	14:15:00.0000000	15:50:00.0000000	5     5



потому что мы даем 3/2 1 и 1


и после этого обновления мы должны обновит для колонке "mes" #t1 тоже

в резултате нужн получит такую таблицу






gr	        d_id	start_time	        end_time	      less_id	last_week_less

a1        	1	12:30:00.0000000	14:05:00.0000000	2	NULL
a1        	1	14:15:00.0000000	15:50:00.0000000	1	null
a1        	1	16:00:00.0000000	17:35:00.0000000	null	NULL
a1        	1	17:45:00.0000000	19:20:00.0000000	null    null
a1        	2	12:30:00.0000000	14:05:00.0000000	2       NULL
a1        	2	14:15:00.0000000	15:50:00.0000000	null    null
a1        	2	16:00:00.0000000	17:35:00.0000000	null	NULL
a1        	2	17:45:00.0000000	19:20:00.0000000	NULL	NULL
a1        	3	12:30:00.0000000	14:05:00.0000000	5	5
a1        	3	14:15:00.0000000	15:50:00.0000000	6	NULL
a1        	3	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	3	17:45:00.0000000	19:20:00.0000000	NULL	NULL
a1        	4	12:30:00.0000000	14:05:00.0000000	3	3
a1        	4	14:15:00.0000000	15:50:00.0000000	NULL	NULL
a1        	4	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	4	17:45:00.0000000	19:20:00.0000000	NULL	NULL
a1        	5	12:30:00.0000000	14:05:00.0000000	4	NULL
a1        	5	14:15:00.0000000	15:50:00.0000000	NULL	NULL
a1        	5	16:00:00.0000000	17:35:00.0000000	NULL	NULL
a1        	5	17:45:00.0000000	19:20:00.0000000	NULL	NULL


спасибо за помоши
5 дек 15, 14:17    [18517757]     Ответить | Цитировать Сообщить модератору
 Re: проблема обновления 2 таблицы  [new]
sparrow
Member

Откуда: Россия, Красноярск.
Сообщений: 21761
где вопрос?
5 дек 15, 15:07    [18517846]     Ответить | Цитировать Сообщить модератору
 Re: проблема обновления 2 таблицы  [new]
yaxta
Member

Откуда: азербайджан,баку
Сообщений: 518
sparrow
где вопрос?



я записал структур данных 2 таблице и нужные резултат

запрос нет у меня
5 дек 15, 15:10    [18517856]     Ответить | Цитировать Сообщить модератору
 Re: проблема обновления 2 таблицы  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1757
yaxta,


если честно с ваших объяснений нихрена не понятно, потому что:
потому что мы даем 3/2 1 и 1


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

Если связывать таблицы чисто по столбцу gr получится черти что
5 дек 15, 22:09    [18519116]     Ответить | Цитировать Сообщить модератору
 Re: проблема обновления 2 таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8584
Для анализа условий можно использовать CASE ENDCASE или IIF().
Например:

update T1 set F1 = case when условие_подходит then T2.F2 else T1.F1 end where T1.id = T2.id
7 дек 15, 11:49    [18523140]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить