|
|
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Народ, что я делаю не так??? 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 '.'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:19:25 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Может я и ошибаюсь, но не дает он так с функцией: process_order ( o. [id] , ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:23:32 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Да я и сам подозреваю что не делает, но на что это заменить ( кроме курсоров ) мне пока в голову не пришло - вот и ищу советы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:25:25 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
По моему с функциями так обращатся нельзя, хотя могу и ошибаться... а как без курсоров... так расскажите, что получить надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:45:51 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Есть список "приказов" - active_orders() или таблица orders - дело не меняет Далее надо создать выборку на основе orders, а формурует ее process_order() - т.е. вызывается для каждой записи в orders и возвращет свою ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:49:17 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:54:22 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Ну может так попробовать. Набор данных на основе orders заносим в таблицу #process_order. Еще один набор в #active_orders, и потом делаем выборку из этих двух таблиц. Работать должно достаточно быстро (по моему даже побыстрее чем с функциями). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:55:02 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
А вы логически себе представляете, что вы заставляете делать сервер этим запросом ? 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] "позаботятся" о фильтрации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:08:45 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
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 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:16:30 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Я уже почти согласен на курсор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:17:49 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Я хочу из одной выборки сформировать другую на основании process_order - беру запись - формирую новую - записываю в результирующую выборку, ВСЕ! КАК ЭТО сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:25:06 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Ваша функция process_order может вернуть на основе двух параметров @from_date datetime и @till_date datetime набор для всех [id] ? Или не может ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:44:46 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
2Glory: не может! Она возвращает одну запись на основе ОДНОЙ записи в orders ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:47:04 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
IMHO никак. Или написать функцию process_active_orders. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:48:04 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Ответ и будет телом для process_active_orders()! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:51:58 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
Я чувствую, что придется использовать курсор ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 17:52:38 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
да поставте задачу.... обрисуйте конкретнее... скрипт таблицы и примерные данные..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 18:10:48 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
2Mice: Вроде задача итак обрисована, дальше некуда - есть таблица - приказы - на основании ее строится другая таблица - результат таблицы приказы - каждая запись в приказах - новая запись в таблице разве проблема не кристально ясна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 18:20:42 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
И мне не понятно (4 раза всю тему перечитал), да оно и понятно мы из клиники! Я вот в толк не могу взять, куда тут курсор присобачить! На мой взгляд, все решается в один селект. Ну, при желании можно в три селекта - но это надо уже стараться :) id.приказы = id.зиписи по приказам ЗЫ Join и into ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 18:49:42 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
НЕЕЕЕЕЕЕЕЕЕААААААААААА: Вот что было бы с курсором: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 18:54:10 |
|
||
|
Наверное, НЕ простой запрос
|
|||
|---|---|---|---|
|
#18+
2funikovyuri Давайте лучше откроем новый топик, в котором вы 1. опишите задачу 2. приведете скрипты таблиц 3. приведете примеры исходных данных 4. приведете для этих данных конечный результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 19:03:00 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3374&tid=1818705]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 290ms |

| 0 / 0 |
