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

Откуда:
Сообщений: 6
Здравствуйте, еще раз.

Подсказка нужна по следующей задаче.

Есть два представления

[daemon_prices]
good_id || price || new_price
----------------------------
1 || 50 || null
2 || 50 || 52
3 || 50 || 49
4 || 50 || null

[daemon_stocks]
good_id || shop_id || stock || new_stock
----------------------------------------
1 || 1 || 10 || null
1 || 2 || 10 || null
2 || 1 || 10 || null
3 || 2 || 10 || null
4 || 1 || 10 || null
4 || 2 || 10 || 11

Задача заключается в представлении нового представления, аналогичного [daemon_prices], в которое будут внесены изменения в столбец new_price по следующему правилу: если [daemon_stocks].[new_stock] хотя бы для одного [shop_id] для конкретного [good_id] != null, тогда [daemon_prices].[new_price] := [daemon_prices].[price],

то есть пример выше должен быть преобразован в

[daemon_prices]
good_id || price || new_price
----------------------------
1 || 50 || null
2 || 50 || 52
3 || 50 || 49
4 || 50 || 50

Можно ли это реализовать только с помощью дополнительного представления (без пользовательских функций)?
26 дек 12, 07:27    [13686283]     Ответить | Цитировать Сообщить модератору
 Re: Новое view: изменение одного поля в view I по выполнению условия в view II  [new]
ZVER-10
Member

Откуда:
Сообщений: 506
ygnuidze,
а почему в результате 3\50\49. или меняем new_price если =null?
26 дек 12, 07:57    [13686313]     Ответить | Цитировать Сообщить модератору
 Re: Новое view: изменение одного поля в view I по выполнению условия в view II  [new]
ygnuidze
Member

Откуда:
Сообщений: 6
ZVER-10
ygnuidze,
а почему в результате 3\50\49. или меняем new_price если =null?


Исходные данные нужно оставить. Меняется только null.
26 дек 12, 08:07    [13686324]     Ответить | Цитировать Сообщить модератору
 Re: Новое view: изменение одного поля в view I по выполнению условия в view II  [new]
aleks2
Guest
ygnuidze
Можно ли это реализовать только с помощью дополнительного представления (без пользовательских функций)?

Тя надо обучить пользоваться case/isnull/exists?
26 дек 12, 10:06    [13686711]     Ответить | Цитировать Сообщить модератору
 Re: Новое view: изменение одного поля в view I по выполнению условия в view II  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31434
ygnuidze
Можно ли это реализовать только с помощью дополнительного представления (без пользовательских функций)?
Да, примитивный запрос.

А как это интересно можно реализовать пользовательскими функциями???

select	p.good_id, 
	p.price, 
	isnull(p.new_price, 
		case when exists(
			select * from [daemon_stocks] s where s.good_id = p.good_id and s.new_stock is not null) 
		then p.price else null end
	) as new_price
from [daemon_prices] p
26 дек 12, 10:17    [13686771]     Ответить | Цитировать Сообщить модератору
 Re: Новое view: изменение одного поля в view I по выполнению условия в view II  [new]
ygnuidze
Member

Откуда:
Сообщений: 6
alexeyvg
ygnuidze
Можно ли это реализовать только с помощью дополнительного представления (без пользовательских функций)?
Да, примитивный запрос.

А как это интересно можно реализовать пользовательскими функциями???

select	p.good_id, 
	p.price, 
	isnull(p.new_price, 
		case when exists(
			select * from [daemon_stocks] s where s.good_id = p.good_id and s.new_stock is not null) 
		then p.price else null end
	) as new_price
from [daemon_prices] p


Спасибо.
26 дек 12, 10:19    [13686789]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить