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

Откуда:
Сообщений: 8
Есть 2 таблицы 1- Продажа, 2-Препараты , надо в таблицу Продажи вбить автозаполнение столбца Цена Который должен считатся
Прождажа.Количество*Препараты.Цена Реализации , но через триггер не получается . На Крайний случай вводил просто что бы цена совпадала с ценой преализации все равно не выходило.
CREATE TRIGGER [cena_pr] on [dbo].[Продажа]

AFTER INSERT Not for replication
AS
BEGIN

SET NOCOUNT ON;
DECLARE @cena decimal

DECLARE @prep int

SELECT @cena=Цена, @prep=КодПрепарата
FROM INSERTED if @cena is null
begin

update dbo.Продажа
SET dbo.Продажа.Цена = Препараты.ЦенаРеализации
where @prep = dbo.Продажа.КодПрепарата

end

END
GO

Текст триггера, он все равно не работает.. .
10 сен 12, 23:08    [13143030]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Primus inter pares
Member

Откуда: Волшебная страна
Сообщений: 75
if @cena is null 

А если не null то не надо апдейтить? Вы видимо все-таки вводите какую-то цену вот ничего и не происходит.
11 сен 12, 08:12    [13143488]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2995
а зачем тригер, если можно сделать вычисляемый столбец?
11 сен 12, 08:15    [13143491]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Gentrum
Текст триггера, он все равно не работает.. .
Вам нужно для начала освоить оператор UPDATE, научиться обновлять записи в таблице, а потом уже научиться применять этот оператор в триггерах. См. http://msdn.microsoft.com/ru-ru/library/ms177523(v=sql.105)

Сайчас у вас написан странный текст обновления - во первых, неправильный синтаксически, во вторых, вы обновляете одну строку из "Продажа" сразу всеми строками из "Препараты"
11 сен 12, 10:04    [13143886]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
HandKot
а зачем тригер, если можно сделать вычисляемый столбец?
Не надо делать вычисляемый столбец, если для вычислений нужны нексолько таблиц. Лучше обновлять в триггере или в процедуре.
11 сен 12, 10:05    [13143893]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Gentrum
Member

Откуда:
Сообщений: 8
alexeyvg
Сайчас у вас написан странный текст обновления - во первых, неправильный синтаксически, во вторых, вы обновляете одну строку из "Продажа" сразу всеми строками из "Препараты"

Да я знаю, мне надо обновлять одну строку из "Продажа" одной строкой из "Препараты"... Просто это надо сделать срочно, иначе курсовая вылетит в трубу....
11 сен 12, 10:33    [13144093]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Gentrum
Member

Откуда:
Сообщений: 8
CREATE TRIGGER [cena_pr] on [dbo].[Продажа]

AFTER INSERT Not for replication
AS
BEGIN

SET NOCOUNT ON;
DECLARE @cena decimal

DECLARE @prep int

SELECT @cena=Цена, @prep=КодПрепарата
FROM INSERTED if @cena is null
begin

update dbo.Продажа
SET dbo.Продажа.Цена = (select Препараты.ЦенаРеализации from Препараты where Продажа.КодПрепарата=Препараты.КодПрепарата)
where @prep = dbo.Продажа.КодПрепарата

end

END
GO

Этот триггер я смог создать... Теперь я так понимаю мне просто надо сделать "вычисляемый столбец" Который бы считал Суммы = Продажа.Количество*Продажа.Цена... Или я не в ту степь пошел?
11 сен 12, 10:43    [13144182]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gentrum
Этот триггер я смог создать...

Тогда в чем вопрос ?

Gentrum
Теперь я так понимаю мне просто надо сделать "вычисляемый столбец" Который бы считал Суммы = Продажа.Количество*Продажа.Цена...

Вычисляемое поле - это альтернатива триггеру.
11 сен 12, 10:56    [13144276]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Gentrum
Member

Откуда:
Сообщений: 8
Glory,

Да вот, только я не знаю как его делать =)
11 сен 12, 11:01    [13144306]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gentrum
Да вот, только я не знаю как его делать =)

Gentrum
Этот триггер я смог создать...

В чем проблема то ?
Чего то не хватает для курсовой ?
11 сен 12, 11:03    [13144318]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Gentrum
Просто это надо сделать срочно, иначе курсовая вылетит в трубу....
Какой вы молодец, курсовые делаете прямо в начале года, в начале сентября, завидую!

Gentrum
Glory,

Да вот, только я не знаю как его делать =)
Во первых, для курсовой не нужно, во вторых, я уже писал по поводу вычисляемых полей - это у вас всё равно не получится.
11 сен 12, 11:08    [13144336]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Gentrum
Member

Откуда:
Сообщений: 8
Glory,

Да мне надо в таблице продажа, теперь сделать столбец который бы считаю "Сумма= Цена*количество" я в универе этого не делал... не знаю как вот сейчас ищу
11 сен 12, 11:08    [13144341]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Gentrum
Member

Откуда:
Сообщений: 8
alexeyvg
Gentrum
Просто это надо сделать срочно, иначе курсовая вылетит в трубу....
Какой вы молодец, курсовые делаете прямо в начале года, в начале сентября, завидую!


ДА, это хзвост с прошлого семестра если в течении 2 дней не сдам то меня на отчисление запишут ...
11 сен 12, 11:10    [13144348]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Gentrum
Да мне надо в таблице продажа, теперь сделать столбец который бы считаю "Сумма= Цена*количество"
Что надо сделать - поле в таблицу добавить, в запросе сумму вывести?
Gentrum
ДА, это хзвост с прошлого семестра если в течении 2 дней не сдам то меня на отчисление запишут ...
А, ну так раньше надо начинать...
Одни бакапы начинаю делать, когда начальник заставляет вводить 100500 документов после падения базы, другие учатся вопросы зараннее задавать только после отчисления :-)
11 сен 12, 11:13    [13144365]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Gentrum
Member

Откуда:
Сообщений: 8
alexeyvg,

Мне просто надо полную сумму продажи вывести на экран, Будет это в новом столбце ии же в столбец Цены не имеет значения
11 сен 12, 11:20    [13144413]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
Gentrum
Мне просто надо полную сумму продажи вывести на экран, Будет это в новом столбце ии же в столбец Цены не имеет значения

Начните с написания SELECT-а, который вернет вам нужный результат для уже имеющихся записей.
Если напишите SELECT, то напишите и UPDATE
11 сен 12, 11:22    [13144430]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Gentrum
alexeyvg,

Мне просто надо полную сумму продажи вывести на экран, Будет это в новом столбце ии же в столбец Цены не имеет значения
Для этого вам не нужно никаких триггеров и вычисляемых столбцов.

Вам нужно написать запрос на получение данных: http://msdn.microsoft.com/ru-ru/library/ms189499(v=sql.105)
выбрав данные из 2-х таблиц, используя операторы FROM и JOIN http://msdn.microsoft.com/ru-ru/library/ms177634(v=sql.105)
подсчитав получившуюся сумму, используя функцию SUM и группировку http://msdn.microsoft.com/ru-ru/library/ms177673(v=sql.105)
11 сен 12, 11:29    [13144482]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
alexeyvg
я уже писал по поводу вычисляемых полей - это у вас всё равно не получится.
Вообще-то, может получиться.
Но плохо это, да.
11 сен 12, 11:31    [13144508]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
iap
alexeyvg
я уже писал по поводу вычисляемых полей - это у вас всё равно не получится.
Вообще-то, может получиться.
Но плохо это, да.
Это только пользовательскую функцию писать и ставить вычисляемым столбцом. Мало того, что плохо, но и у ТС это просто не получится :-)
11 сен 12, 11:35    [13144549]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
alexeyvg
Это только пользовательскую функцию писать и ставить вычисляемым столбцом. Мало того, что плохо, но и у ТС это просто не получится :-)

Да напишите ему. И преподаватель сразу поймет уровень и оценит )
11 сен 12, 11:37    [13144576]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Glory
alexeyvg
Это только пользовательскую функцию писать и ставить вычисляемым столбцом. Мало того, что плохо, но и у ТС это просто не получится :-)

Да напишите ему. И преподаватель сразу поймет уровень и оценит )
Не, не надо. С подходом ТС он же будет не моим коллегой, а моим начальником :-)
11 сен 12, 11:38    [13144585]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
alexeyvg
Не, не надо. С подходом ТС он же будет не моим коллегой, а моим начальником :-)

Предсталяю.
На сдачу по теме вроде "Простейшие эл.схемы" заходит Gentrum с работающей моделью "синхрофазатрона"
Минутное недоумение
Аплодисметны, переходящие в овации.
Красный диплом.
Командировка в Москву, в Академию наук.
...
11 сен 12, 11:45    [13144651]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Glory
alexeyvg
Не, не надо. С подходом ТС он же будет не моим коллегой, а моим начальником :-)

Предсталяю.
На сдачу по теме вроде "Простейшие эл.схемы" заходит Gentrum с работающей моделью "синхрофазатрона"
Минутное недоумение
Аплодисметны, переходящие в овации.
Красный диплом.
Командировка в Москву, в Академию наук.
...
Не, не совсем так :-)

- Программировать умеешь?
- Нет...
- Так, этого в ПМ-ы

Не, пусть лучьше хоть немножко хелп прочитает...
11 сен 12, 11:51    [13144717]     Ответить | Цитировать Сообщить модератору
 Re: Заполнение таблицы  [new]
Gentrum
Member

Откуда:
Сообщений: 8
Glory,

ЛУчше я прийду с патентом губозакаточной машины)
11 сен 12, 11:57    [13144803]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить