Оптимальное решение

Илья
Дата: 01.02.2001 12:07:07
Подскажите пожалуйста!
Создаю базу на SQL 7.0 - есть куча клиентов, у клиентов есть куча заказов.
Певое что пришло в голову для обработки заказов - при создании клиента создавать для него персональный VIEW и потом с его помощью работать с заказом (они должны время от времени меняться). Но выяснилось VIEW триггером не создать нельзя его создать и процедурой
Как лучше поступить? Вытаскивать данные процедурой а потом записывать поверх старых очень не хочется!
ArtP
Дата: 01.02.2001 14:40:27
В таких случаях и не надо создавать View для каждого клиента. Обычно создают одну View, одно из полей которой имеет значение кода клиента, for example

create table Clients (
code varchar(20) not null primary key,
descr varchar(60) null,
....
)

create table Orders (
id int not null primary key identity,
order_code varchar(20) not null,
client_code varchar(20) not null,
count int not null,
...
)

create view ClientOrdersView as
select
o.id,
c.code,
o.order_code,
o.count,
....
from
Clients c,
Orders o
where
c.code = o.client_code

чтобы получить заказы по клиенту Intel делают запрос типа

select * from ClientOrdersView where code = 'Intel' order by ...
Илья
Дата: 01.02.2001 19:45:13
Это все понятно смущает такой момент: если заказов 100000 то клиентск.приложению придется все их вытаскивать и выбирать по нужному коду, а хотелось бы чтоб VIEW выдал только необходимые записи - с нужным кодом. Это было бы возможно, если я буду создавать с клиентом и VIEW для него.
Подскажите, как действовать?
Павел
Дата: 02.02.2001 06:01:15
А что у вас за клиентская софтина? Судя по вопросу наверно Access. Да наверно еще и с прилинковаными таблицами. Это вообще не совсем клиент-сервер. Но скажу сразу: на клиент все данные вытаскивать и обрабатывать не нужно. Это задача сервера.
Илья
Дата: 02.02.2001 07:08:30
Ну да, он самый - Access.
Но в качестве источника данных для формы я хочу использовать различные VIEW - для каждого клиента свой. Если это неправильно - подскажите плз, как сделать лучше!
Павел
Дата: 02.02.2001 10:06:00
Когда то я делал это так: создавал запрс к серверу с парамеирами и указывал его в качестве источника записей формы. При открытии формы задавал необходимые параметры. Вот только такой запрос в аксессе не обновляемый. Но это не означает что нельзя редактировать данные. Их нельзя изменить только в этой форме. Как вариант - шли серверу SQL команды, а в форме говори Requery.
alexeyvg
Дата: 02.02.2001 13:04:04
Задачу можно решить, используя таблицы с именем клиента и заведя одноимённые логины, а в VIEW сделать условие WHERE client = SYSTEM_USER. Конечно, если пользователей нужно различать, можно сделать таблицу, связываещую клиентов и пользователей и использовать в VIEW её.