Вниз
Скачать: CL | DM;

Не работает ORDER BY на VIEW   Найти похожие ветки 

← →
Vemer ©   (2003-11-07 12:52) [0]

Здравствуйте.
Пытаюсь создать VIEW для склада, который брак показывает,
но почему-то при создании ругается на строку с Order By PIN. В Фароновском учебнике есть пример VIEW с ORDER, в общем не могу понять почему VIEW не создается. Может ему SQL 3 нужен или товарищ фаронов ошибается и ORDER нельзя в VIEW использовать? Помогите разобраться.

Код создания VIEW:

create view Brak_View ( PIN, Iname, Brak )
as
select PIN, Iname, Brak from Sklad
where Brak > 0
order by PIN


← →
Sandman25 ©   (2003-11-07 12:56) [1]

View создается без Order By.

create view Brak_View ( PIN, Iname, Brak )
as
select PIN, Iname, Brak from Sklad
where Brak > 0;

А вот при извлечении из него уже можно сортировать.

select *
from brak_view
order by 1 desc


← →
Vemer ©   (2003-11-07 13:03) [2]

Спасибо за ответ.

Фаронов - м..к, Форум - Rulez!!

Жаль, а так хотелось. Тогда проще Query в проге создать будет, который и Select и Order будет делать.


← →
Sandman25 ©   (2003-11-07 13:08) [3]

View удобнее тем, что если изменится реализация (например, браком будет считаться, если (braK > 0) and (brak_allowed = 1)) то не надо будет исправлять программу. Или тем, что если в каждом query нужно фильтровать по тому же условию, то устаешь, и тогда лучше create view ne_brak :)
Но в данном случае похоже, действительно, написать from sklad легче.


← →
MsGuns ©   (2003-11-07 13:52) [4]

А я использую вьшки в двух случаях:

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

2. Получение предварительного датасета для последующего извлечения из него клиентским запросом по некоторым своим (клиентским опять же) критериям. Что-то вроде "промежуточного звена"


← →
Sandman25 ©   (2003-11-07 15:17) [5]

3. Разграничение доступа.
3a. Клиент видит только то, что относится к нему
create view viw_who_am_i as select * from all_user where login=USER
3b. Клиент что-то видит, только если у него есть контрольная точка.
create view viw_all_users as select * from all_users where exists (select ...)

4. Динамическое использование. Иногда нужно использовать либо одну связку таблиц, либо другую, в зависимости от запроса пользователя. Легче изменить from viw1 на from viw2, чем from table1, table2 where table1.id=table2.id
на from table3, table4 where table3.id=table4.id and not exists (select * from table5 ...)


← →
Johnmen ©   (2003-11-07 23:15) [6]

>Vemer ©

Видимо умение (желание) посмотреть в прилагаемую к IB6 документацию тебе несвойственно... :( Что печально...
Иначе не было бы таких !!! вопросов...
A SELECT statement clause cannot include the ORDER BY clause.


← →
VID ©   (2003-11-08 10:41) [7]

Johnmen: попроще, человека просто по всей видимости сбило с толку то, что в книге популярного автора как раз-таки "ОРДЕР БАЙ клауз" :) вполне используется


← →
Vemer ©   (2003-11-08 10:56) [8]

> Jormen
К Yaffil Personal документация не прилагается.
А IBserver Open Source 6.0 я просто переписал у кого-то.
Что есть, тем и пользуемся. Фаронов у нас тоже недешев.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
1-89925
qwe
2003-11-18 11:21
2003.11.27
Package


1-89847
Agent[007]
2003-11-16 12:20
2003.11.27
Chr(Ord(...))


3-89738
beware
2003-11-08 05:56
2003.11.27
Сбор данных


1-89906
Frol
2003-11-12 01:10
2003.11.27
Вычисление определенного интеграла


1-89852
Митяй
2003-11-06 18:58
2003.11.27
Строковая функция.




   Наверх