Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Наверное, НЕ простой запрос / 22 сообщений из 22, страница 1 из 1
18.11.2002, 16:19:25
    #32069099
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Народ, что я делаю не так???


CREATE FUNCTION active_orders ( @employee int, @from_date datetime, @till_date datetime )
...
CREATE FUNCTION process_order ( @id bigint, @from_date datetime, @till_date datetime )
...

select p. * from active_orders( @employee, @from_date, @till_date ) o,
process_order ( o. [id], @from_date, @till_date ) p
where o. [id] = p. [id]

SQL пишет
Server: Msg 170, Level 15, State 1, Procedure process_active_orders, Line 4
Line 4: Incorrect syntax near '.'.
...
Рейтинг: 0 / 0
18.11.2002, 16:23:32
    #32069107
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Может я и ошибаюсь, но не дает он так с функцией:
process_order ( o. [id] ,
...
Рейтинг: 0 / 0
18.11.2002, 16:25:25
    #32069110
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Да я и сам подозреваю что не делает, но на что это заменить ( кроме курсоров ) мне пока в голову не пришло - вот и ищу советы
...
Рейтинг: 0 / 0
18.11.2002, 16:45:51
    #32069137
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
По моему с функциями так обращатся нельзя, хотя могу и ошибаться... а как без курсоров... так расскажите, что получить надо?
...
Рейтинг: 0 / 0
18.11.2002, 16:49:17
    #32069141
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Есть список "приказов" - active_orders() или таблица orders - дело не меняет
Далее надо создать выборку на основе orders, а формурует ее process_order() - т.е. вызывается для каждой записи в orders и возвращет свою
...
Рейтинг: 0 / 0
18.11.2002, 16:54:22
    #32069148
snake
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Код: plaintext
... dbo.process_order ( o. [id],...
...
Рейтинг: 0 / 0
18.11.2002, 16:55:02
    #32069149
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Ну может так попробовать. Набор данных на основе orders заносим в таблицу #process_order. Еще один набор в #active_orders, и потом делаем выборку из этих двух таблиц. Работать должно достаточно быстро (по моему даже побыстрее чем с функциями).
...
Рейтинг: 0 / 0
18.11.2002, 17:08:45
    #32069168
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
А вы логически себе представляете, что вы заставляете делать сервер этим запросом ?

select p. * from active_orders( @employee, @from_date, @till_date ) o,
process_order ( o. [id], @from_date, @till_date ) p
where o. [id] = p. [id]

Вы говорите - хочу связать два набора данных по o. [id] = p. [id] вот только один из наборов будет разный для каждой записи из первого набора. Т.е. хочу связать один набор данных с неизвестным количеством наборов данных.

Думаю, что ваша функция process_order() должна возвращать вообще все данные, для всех id. А уж active_orders() и o. [id] = p. [id] "позаботятся" о фильтрации
...
Рейтинг: 0 / 0
18.11.2002, 17:16:30
    #32069178
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
2Glory: Логически понимаю - и уже написал, что бы мне хотелось выполнить таким запросом.

Вот еще оди вариант и тоже не работает:
insert into @processed_orders select [id] from active_orders( @employee, @from_date, @till_date )
update @processed_orders
set
employee = @employee,
from_date = @from_date,
till_date = @till_date
from process_order ( [id], @from_date, @till_date )
...
Рейтинг: 0 / 0
18.11.2002, 17:17:49
    #32069179
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Я уже почти согласен на курсор
...
Рейтинг: 0 / 0
18.11.2002, 17:25:06
    #32069192
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Я хочу из одной выборки сформировать другую на основании process_order - беру запись - формирую новую - записываю в результирующую выборку, ВСЕ!
КАК ЭТО сделать?
...
Рейтинг: 0 / 0
18.11.2002, 17:44:46
    #32069221
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Ваша функция process_order может вернуть на основе двух параметров @from_date datetime и @till_date datetime набор для всех [id] ? Или не может ?
...
Рейтинг: 0 / 0
18.11.2002, 17:47:04
    #32069223
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
2Glory: не может! Она возвращает одну запись на основе ОДНОЙ записи в orders
...
Рейтинг: 0 / 0
18.11.2002, 17:48:04
    #32069227
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
IMHO никак. Или написать функцию process_active_orders.
...
Рейтинг: 0 / 0
18.11.2002, 17:51:58
    #32069229
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Ответ и будет телом для process_active_orders()!
...
Рейтинг: 0 / 0
18.11.2002, 17:52:38
    #32069231
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
Я чувствую, что придется использовать курсор ;-)
...
Рейтинг: 0 / 0
18.11.2002, 18:10:48
    #32069250
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
да поставте задачу.... обрисуйте конкретнее...
скрипт таблицы и примерные данные.....
...
Рейтинг: 0 / 0
18.11.2002, 18:20:42
    #32069256
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
2Mice:
Вроде задача итак обрисована, дальше некуда
- есть таблица - приказы
- на основании ее строится другая таблица - результат таблицы приказы
- каждая запись в приказах - новая запись в таблице

разве проблема не кристально ясна?
...
Рейтинг: 0 / 0
18.11.2002, 18:49:42
    #32069270
MarchCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
И мне не понятно (4 раза всю тему перечитал), да оно и понятно мы из клиники!
Я вот в толк не могу взять, куда тут курсор присобачить!
На мой взгляд, все решается в один селект. Ну, при желании можно в три селекта - но это надо уже стараться :)

id.приказы = id.зиписи по приказам

ЗЫ Join и into
...
Рейтинг: 0 / 0
18.11.2002, 18:54:10
    #32069277
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
НЕЕЕЕЕЕЕЕЕЕААААААААААА:
Вот что было бы с курсором:


DECLARE orders CURSOR FOR
select * from orders where ...

OPEN orders

FETCH orders
INTO @some_data
WHILE @@FETCH_Status = 0
BEGIN

insert into @RET_VAL select * from process_order( @some_data )

END

ПРИ ЭТО @some_data эту не поле, а набор полей!
ВОТ и получили результат - таблицу @RET_VAL
...
Рейтинг: 0 / 0
18.11.2002, 19:03:00
    #32069281
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
2funikovyuri
Давайте лучше откроем новый топик, в котором вы
1. опишите задачу
2. приведете скрипты таблиц
3. приведете примеры исходных данных
4. приведете для этих данных конечный результат
...
Рейтинг: 0 / 0
19.11.2002, 10:30:18
    #32069415
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Наверное, НЕ простой запрос
А также
o. [id]
должно быть без пробела
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Наверное, НЕ простой запрос / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]