Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.15;
Скачать: CL | DM;

Вниз

SQL В MSSQL   Найти похожие ветки 

 
Stanislav ©   (2006-09-22 13:33) [0]

Почему в MSSQL не работает следующая конструкция:
Select A=([Filed1]*10), B=A*2
Хотя в SYBASE (родитель MSSQL) работает, да и в ACCESS от того же MS работает.
Понятно что без этого не сложно обойтись, но всеже интересно.


 
StriderMan ©   (2006-09-22 13:36) [1]


> Почему в MSSQL не работает следующая конструкция:
> Select A=([Filed1]*10), B=A*2

и правильно. нечего ерундой маяццо.


 
Ega23 ©   (2006-09-22 13:36) [2]


Set NoCount ON
Create Table #XXX (A int)
Insert into #XXX (A) Values (1)
Insert into #XXX (A) Values (2)
Insert into #XXX (A) Values (3)
Insert into #XXX (A) Values (4)
Insert into #XXX (A) Values (5)

Set NoCount OFF

Select A=A*10, B=A*2 from #XXX

Drop Table #XXX


Всё работает...


 
Stanislav ©   (2006-09-22 13:39) [3]

Ega23 ©   (22.09.06 13:36) [2]
:-)

в первой строке B=2,  а должно  20.


 
sniknik ©   (2006-09-22 13:40) [4]

Ega23 ©   (22.09.06 13:36) [2]
у тебя нет обращения по алиасу как в [0].

с алиасом действительно в аксессе работает а в mssql нет, что странно т.к. аналогичные продукты одной фирмы...


 
Ega23 ©   (2006-09-22 13:41) [5]

А, вон ты о чём...
Это тебе не excel, брат....


 
Stanislav ©   (2006-09-22 13:42) [6]

А в оракле работает?


 
Stanislav ©   (2006-09-22 13:44) [7]

Не Excel, но код был бы понятнее, а так приходится либо дублировать одно и тоже вычисление или делать вложеный запрос.
Интересно, а при дублировании одного и того же вычисления, оно и пересчитывается столько же раз?


 
Ega23 ©   (2006-09-22 13:48) [8]


Set NoCount ON
Create Table #XXX (A int)
Insert into #XXX (A) Values (1)
Insert into #XXX (A) Values (2)
Insert into #XXX (A) Values (3)
Insert into #XXX (A) Values (4)
Insert into #XXX (A) Values (5)

Select A=A*10 into #XXX1 from #XXX

Set NoCount OFF
Select A, B=A*2 from #XXX1

Drop Table #XXX
Drop Table #XXX1



Вот так изгольнулся.


 
Stanislav ©   (2006-09-22 13:51) [9]

МОЖНО  ТАК :-)
Set NoCount ON
Create Table #XXX (A int)
Insert into #XXX (A) Values (1)
Insert into #XXX (A) Values (2)
Insert into #XXX (A) Values (3)
Insert into #XXX (A) Values (4)
Insert into #XXX (A) Values (5)

Select A, B=A*2 from (Select A=A*10  from #XXX) AS Q

Drop Table #XXX


 
Romkin ©   (2006-09-22 14:45) [10]


> в первой строке B=2,  а должно  20.

Нет, не должно. Все вычисления выполняются параллельно по стандарту.


 
evvcom ©   (2006-09-22 15:07) [11]

> [6] Stanislav ©   (22.09.06 13:42)

Нет, не работает. А вот как в [9] тоже пройдет.


 
Курдль ©   (2006-09-22 15:35) [12]


> Stanislav ©   (22.09.06 13:42) [6]
> А в оракле работает?

В DB2 AS/400 тоже не работает :(
Только такой: with T1 as (select ([FIELD]*10) as A from [TABLE])
select (A * 2) as B
from T1


В общем, фигни какие-то, а не СУБД :(


 
Val ©   (2006-09-22 15:41) [13]

>[6] Stanislav ©   (22.09.06 13:42)
нет.


 
MOA ©   (2006-09-22 15:43) [14]

>Почему ... не работает :
Есть ли разница:
SELECT [A]=([P]*10), [B]=2*[A] FROM ...
и
SELECT [B]=2*[A], [A]=([P]*10) FROM ...

Если есть - т.е. получаются разные В - про операции над множествами смело забываем - имеем замороченный императивный язык, отслеживающий порядок исполнения и т.д. А как с триггерами быть? Сколько раз их вызывать? В каком порядке? И т.д.

В принятой реализации SQL - разницы нет - берётся то значение, которое было ДО операции - всё логично.



Страницы: 1 вся ветка

Текущий архив: 2006.10.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
11-1134628150
Barloggg
2005-12-15 09:29
2006.10.15
Как сделать зеркало под либу? Ваять новый набор компонент?


15-1159026946
Alx2
2006-09-23 19:55
2006.10.15
"Раздумья ездового волка"


1-1157523050
DmiSb
2006-09-06 10:10
2006.10.15
Как программно открыть календарь у TDateTimePicker ?


11-1135681340
Flea
2005-12-27 14:02
2006.10.15
KOLGets ?


15-1159259194
Gydvin
2006-09-26 12:26
2006.10.15
Путь до файлов MS office