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

Откуда:
Сообщений: 259
Доброе время суток. Только учусь, без обид на глупые вопросы. У меня есть таблица всего с с несколькими значениями. Мне нужно создать еще несколько полей, по результатам расчетов по этим значениям. Для начала первый неловкий вопрос
select ti as ti, ti*2 as t2i from gy_tab
нормально умножает строку если ti int. В другом поле yi дробные числа в varchar, но он ругается. Как этом можно исправить?
18 июн 13, 09:47    [14445944]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darkhan_dk
Как этом можно исправить?

Не хранить числа в varchar
18 июн 13, 09:51    [14445958]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Darkhan_dk
Доброе время суток. Только учусь, без обид на глупые вопросы. У меня есть таблица всего с с несколькими значениями. Мне нужно создать еще несколько полей, по результатам расчетов по этим значениям. Для начала первый неловкий вопрос
select ti as ti, ti*2 as t2i from gy_tab
нормально умножает строку если ti int. В другом поле yi дробные числа в varchar, но он ругается. Как этом можно исправить?

если число записанное в varchar соответствует числовому типу, то скуль сам неявно все преобразует.
Вывод - в поле varchar записано некорректное число (есть символы, которые не могут быть преобразованы в число)
18 июн 13, 09:51    [14445962]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Darkhan_dk
Доброе время суток. Только учусь, без обид на глупые вопросы. У меня есть таблица всего с с несколькими значениями. Мне нужно создать еще несколько полей, по результатам расчетов по этим значениям. Для начала первый неловкий вопрос
select ti as ti, ti*2 as t2i from gy_tab
нормально умножает строку если ti int. В другом поле yi дробные числа в varchar, но он ругается. Как этом можно исправить?

а зачем они у вас в varchar?
Сделайте тип decimal ну или используйте CAST или CONVERT
18 июн 13, 09:52    [14445964]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
Darkhan_dk,

CAST и CONVERT.
18 июн 13, 09:52    [14445966]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
опс,перевел в реал, заработал)). Второй вопрос. А как это все создается?? Ну, имеется ввиду чтоб не база заполнялась автоматический?
18 июн 13, 09:55    [14445990]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Darkhan_dk
опс,перевел в реал, заработал)). Второй вопрос. А как это все создается?? Ну, имеется ввиду чтоб не база заполнялась автоматический?

что значит : "база заполнялась автоматически(й)"?
18 июн 13, 09:57    [14445998]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
Сергей Викт.,ну у меня как было 3 поля, так и осталось. В скул запросе данные показывает, но как сделать чтоб они и в базе были (поля,данные)
18 июн 13, 10:21    [14446138]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Darkhan_dk
Сергей Викт.,ну у меня как было 3 поля, так и осталось. В скул запросе данные показывает, но как сделать чтоб они и в базе были (поля,данные)

1. Добавить вычисляемое поле
2. Добавить пустое поле с типом decimal и сделать триггер на вставку/обновление данных для заполнения нового поля
18 июн 13, 10:25    [14446169]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Darkhan_dk
но как сделать чтоб они и в базе были (поля,данные)
Добавить вычисляемый столбец
alter table gy_tab add t2i as ti*2;
18 июн 13, 10:25    [14446172]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
invm,
Во! Спасибо. 3 вопрос)). у`=(кол-во строк * сумм(yi)*сумм(yiti)*сумма(t2i))/((кол-во строк * сумм(yi))^2), типа того?
18 июн 13, 10:58    [14446387]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Darkhan_dk,

Зачем в каждой строке таблицы иметь одно и тоже агрегированное значение?
18 июн 13, 11:11    [14446469]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darkhan_dk
3 вопрос)). у`=(кол-во строк * сумм(yi)*сумм(yiti)*сумма(t2i))/((кол-во строк * сумм(yi))^2), типа того?

MSSQL - это не Excel. Нарастающие суммы придется считать в запросе
18 июн 13, 11:21    [14446507]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
Glory,
Я в курсе. Это я типа описываю. Как это запросом делается?
допустим
alter table gy_tab add yyi as ([color=red]max(ti)*(sum(yi)*[/color].....)
как то типа так возможно?
18 июн 13, 12:16    [14446931]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Darkhan_dk
Glory,
Я в курсе. Это я типа описываю. Как это запросом делается?
допустим
alter table gy_tab add yyi as ([color=red]max(ti)*(sum(yi)*[/color].....)
как то типа так возможно?
Возможно через функцию.
18 июн 13, 12:17    [14446936]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darkhan_dk
Я в курсе. Это я типа описываю. Как это запросом делается?
допустим
alter table gy_tab add yyi as ([color=red]max(ti)*(sum(yi)*[/color].....)

как то типа так возможно?

alter table - это не запрос на выборку данных
Запрос на выборку данных начинается с select
18 июн 13, 12:20    [14446958]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
Glory,
я не делаю выборку. я создаю поле по уравнениям в таблице. 2 поля уже создал. теперь 3ее не могу создать, т.к. нужна сумма и сумма строк в поле ti
18 июн 13, 12:44    [14447203]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darkhan_dk
я не делаю выборку. я создаю поле по уравнениям в таблице. 2 поля уже создал. теперь 3ее не могу создать, т.к. нужна сумма и сумма строк в поле ti

Еще раз - такое вычисляемое поле вы можете получить только в запросе, который начинается с select.
18 июн 13, 12:46    [14447224]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
invm
Darkhan_dk
но как сделать чтоб они и в базе были (поля,данные)
Добавить вычисляемый столбец
alter table gy_tab add t2i as ti*2;


с этим же вышло. почему нельзя создать такую же, только сложнее?
18 июн 13, 12:47    [14447227]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
Glory,
Это как на примере,сенсей?
18 июн 13, 13:02    [14447366]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darkhan_dk
Это как на примере,сенсей?

Это как
select <здесь нужные вычисления> from mytable
18 июн 13, 13:04    [14447380]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
ТС, база данных - это не электронная таблица. это реляционная система.
см тут: http://ru.wikipedia.org/wiki/Реляционная_база_данных
18 июн 13, 13:05    [14447397]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Darkhan_dk
Member

Откуда:
Сообщений: 259
Еще вопрос. При изменении значении основных полей, поля полученные по уравнению поменяются?? Программу вообще на делфи делаю,в принципе вычисляемые поля и там мона создать
18 июн 13, 13:09    [14447437]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darkhan_dk
При изменении значении основных полей, поля полученные по уравнению поменяются??

Вычисляемые поля потому и называются вычисляемыми, что не хранятся в таблице а рассчитываются при _обращении_ к ним.
18 июн 13, 13:18    [14447522]     Ответить | Цитировать Сообщить модератору
 Re: Уравнение в запросах  [new]
любителям real-а
Guest
Darkhan_dk
опс,перевел в реал, заработал)). Второй вопрос. А как это все создается?? Ну, имеется ввиду чтоб не база заполнялась автоматический?


классика, да

DECLARE @a REAL = 0.001;
DECLARE @b REAL = 9876543;
DECLARE @c REAL = 1234567;

SELECT @a * (@b * @c) as [a(bc)],
       (@a * @b) * @c as [(ab)c]

--------------------------

a(bc)(ab)c
1.219325E+101.219326E+10
18 июн 13, 13:32    [14447625]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить