-
Делаю приблизительно такой запрос:
SELECT A, B, C, A + B AS D
WHERE <условия>
UNION
SELECT A, B, C, A + C AS D
WHERE <условия>
всё вроде работает, но никак нельзя отсортировать по полю D, ошибка invald order by clause Получается что в случае обьединённого запроса в принципе нельзя сделать сортировку по вычисляемому полю?
-
пропустил естественно FROM DB
-
получается, что надо использовать "запрос из запроса" (FB2.0 разве не поддерживает?), либо сортировать по выражению
-
> Кщд (29.01.09 11:41) [2]
сортировать по выражению - это как?
-
Select * from (
SELECT A, B, C, A + B AS D
WHERE <условия>
UNION
SELECT A, B, C, A + C AS D
WHERE <условия>
) as T
Order By T.D
-
> Ega23 © (29.01.09 11:47) [4]
Работает, большое спасибо!
-
> Konrads (29.01.09 11:34)
SELECT A + B AS D, A, B, C,
WHERE <условия>
UNION
SELECT A + C AS D, A, B, C,
WHERE <условия>
-
ORDER BY 4
-
> Konrads (29.01.2009 11:34:00) [0]
Ни о какой сортировке говорить не приходится, по причине ее полного отсутствия в запросе!
-
Отсутствие явного указания сортировки.
-
> Виталий Панасенко (29.01.09 12:04) [7]
И так тоже работает, спасибо
-
> Konrads (29.01.09 12:21) [10]
Аж странно!..:-)
-
> ORDER BY 4
Я бы поостерёгся так делать.
-
> Ega23 (29.01.2009 15:11:12) [12]
Почему, я бы наоборот, поскольку это по стандарту, а ORDER BY fld является расширением, а ORDER BY func извращением в данном случае
-
> Я бы поостерёгся так делать
только из соображений "не забыть бы, когда меняешь число или порядок полей в select" в этом случае [6] лучше, хоть там сортировка и неявная (можнои явную туда притулить, чтоб не забыть, что там все-таки должно быть сортированное)
|