\\\\ |
---|
Дмитрий П.,
SELECT * FROM (SELECT X1, X2, (X1 + X2)/2 as Y FROM myTable) As qsel WHERE qsel.Y > 1 ORDER BY qsel.Y;
|
Вот я тоже так подумала.
Но решила проверить.
Взяла таблицу с одной записью
Два запроса
1.
SELECT A,B,FuncF(A,B) FROM Таблица1 WHERE FuncF(A,B)>0 ORDER BY FuncF(A,B);
2.
SELECT * FROM (SELECT A,B,FuncF(A,B) AS C FROM Таблица1) AS T WHERE C>0 ORDER BY C;
Функция
Function FuncF(A, B) As Integer
Debug.Print A & "," & B
FuncF = 1
End Function
Получилось по Debug.Print, что для обоих запросов обращение к функции происходит трижды (при одной записи в таблице).
|
---|
20,30 20,30 20,30
20,30 20,30 20,30
|
Если же записей в таблице две, то обращений к функции и в одном, и в другом запросе - семь.
|
---|
20,30 20,30 40,50 40,50 40,50 20,30 40,50
20,30 20,30 40,50 40,50 40,50 20,30 40,50
|
Если записей в таблице три, то получилось по девять обращений к функции
|
---|
20,30 20,30 40,50 40,50 60,70 60,70 60,70 40,50 20,30
20,30 20,30 40,50 40,50 60,70 60,70 60,70 40,50 20,30
|
В общем, у меня получается, что количество обращений из обоих запросов одинаково.
Посмотрите, пожалуйста, есть ли ошибка в моих "изысканиях"?