Главная страница
    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.47 MB
Время: 0.043 c
3-1155295013
Lexiy
2006-08-11 15:16
2006.10.15
Оптимизация запросов


2-1159361585
Alex_C
2006-09-27 16:53
2006.10.15
Как узнать 1 и последнюю видимую строку в Memo?


2-1159358066
Fostr
2006-09-27 15:54
2006.10.15
Передать данные из одной формы в другою


15-1158849426
Колдун
2006-09-21 18:37
2006.10.15
Задача по теории вероятности


2-1159532807
Dmitry_177
2006-09-29 16:26
2006.10.15
Вопрос по сообщениям





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский