Вложенный SQL запрос в линк форме
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Вложенный SQL запрос в линк форме
** преамбула -
хочу select * from ... where ... in (select ... from ...) в линке
** вступление -
необходимо в линк форму добавить поле которое в потоке в форму прототип не поступает, т.е. нужно самому в линке запросами по какому то входному параметру (который передается в прототип) спозиционироваться на нужной записи в нужной табличке и вывести рез-т.
задача как я думаю типичная и решенная многими здесь бывающими
** конкретика -
вот последовательность селектов которыми я в суппорте SQL получал необходимые мне записи
доступные параметры имеющиеся в потоке входящем в форму прототип это номер ДО и дата ДО, так что от них и пляшу (в tovn.pro это "основание" и "датаоснования")
в конце концов нужно получить выборку табличных частей всех накладных относящихся к этому ДО
select nrec from basedoc where ((датаоснования/==ddoc(noindex) and основание/==nodoc(noindex)));
дает 4000D82EA5603462h
select nrec from stepdoc where ((4000D82EA5603462h/==cbasedoc));
дает 400015F167097FEEh
select nrec from katsopr where ((400015F167097FEEh==cstepdoc));
дает несколько NRECO и по всем нужно пробежаться, вот один из них
select * from spsopr where ((4000B19E65184F8Ch==csopr));
каждый из них в SQL выполняется меньше секунды
************ ВОПРОС ****************** -
как это все в линк форме реализовать?
если делать несколько create view
1? то как выход одного view послать на вход другого (т.е. на один ДО один селект даст ссылки на накладные, а следующий селект должен по каждой накладной вывести материалы в ней содержащиеся)
2? если связывать в один view несколько таблиц то просто замучаешся ждать (таблицы очень большие) -> их объединененый вид будет делаться ужасно долго. (вышеописанными селектами очень быстренько)
подскажите плс мастера начинающему - как вы в таких ситуациях поступаете
хочу select * from ... where ... in (select ... from ...) в линке
** вступление -
необходимо в линк форму добавить поле которое в потоке в форму прототип не поступает, т.е. нужно самому в линке запросами по какому то входному параметру (который передается в прототип) спозиционироваться на нужной записи в нужной табличке и вывести рез-т.
задача как я думаю типичная и решенная многими здесь бывающими
** конкретика -
вот последовательность селектов которыми я в суппорте SQL получал необходимые мне записи
доступные параметры имеющиеся в потоке входящем в форму прототип это номер ДО и дата ДО, так что от них и пляшу (в tovn.pro это "основание" и "датаоснования")
в конце концов нужно получить выборку табличных частей всех накладных относящихся к этому ДО
select nrec from basedoc where ((датаоснования/==ddoc(noindex) and основание/==nodoc(noindex)));
дает 4000D82EA5603462h
select nrec from stepdoc where ((4000D82EA5603462h/==cbasedoc));
дает 400015F167097FEEh
select nrec from katsopr where ((400015F167097FEEh==cstepdoc));
дает несколько NRECO и по всем нужно пробежаться, вот один из них
select * from spsopr where ((4000B19E65184F8Ch==csopr));
каждый из них в SQL выполняется меньше секунды
************ ВОПРОС ****************** -
как это все в линк форме реализовать?
если делать несколько create view
1? то как выход одного view послать на вход другого (т.е. на один ДО один селект даст ссылки на накладные, а следующий селект должен по каждой накладной вывести материалы в ней содержащиеся)
2? если связывать в один view несколько таблиц то просто замучаешся ждать (таблицы очень большие) -> их объединененый вид будет делаться ужасно долго. (вышеописанными селектами очень быстренько)
подскажите плс мастера начинающему - как вы в таких ситуациях поступаете
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Вложенный SQL запрос в линк форме
Не морочь голову
select * from
basedoc, stepdoc, katsopr
where
((
датаоснования == basedoc.ddoc(noindex) and
основание == basedoc.nodoc(noindex) and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.csopr == spsopr.csopr
));
select * from
basedoc, stepdoc, katsopr
where
((
датаоснования == basedoc.ddoc(noindex) and
основание == basedoc.nodoc(noindex) and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.csopr == spsopr.csopr
));
Жду выхода Вселенная 2.12!
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Вложенный SQL запрос в линк форме
Опс, забыл еще одну табличку прописать
select * from
basedoc, stepdoc, katsopr, spsopr
where
((
датаоснования == basedoc.ddoc(noindex) and
основание == basedoc.nodoc(noindex) and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.csopr == spsopr.csopr
));
select * from
basedoc, stepdoc, katsopr, spsopr
where
((
датаоснования == basedoc.ddoc(noindex) and
основание == basedoc.nodoc(noindex) and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.csopr == spsopr.csopr
));
Жду выхода Вселенная 2.12!
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Вложенный SQL запрос в линк форме
Еще раз опс, видать день не мой сегодня
select * from
basedoc, stepdoc, katsopr, spsopr
where
((
датаоснования == basedoc.ddoc(noindex) and
основание == basedoc.nodoc(noindex) and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.nrec == spsopr.csopr
));
select * from
basedoc, stepdoc, katsopr, spsopr
where
((
датаоснования == basedoc.ddoc(noindex) and
основание == basedoc.nodoc(noindex) and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.nrec == spsopr.csopr
));
Жду выхода Вселенная 2.12!
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Re: Вложенный SQL запрос в линк форме
такой запрос 100 лет будет крутиться
не подходит
я вот забыл написать что эту всю канетель я могу конечно на випе написать, но незнаю как из випа возвратить полученные данные форме то
не подходит
я вот забыл написать что эту всю канетель я могу конечно на випе написать, но незнаю как из випа возвратить полученные данные форме то
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
-
- Местный житель
- Сообщения: 517
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск Новосибирск
- Контактная информация:
Re: Вложенный SQL запрос в линк форме
во блин - Макс - прошу прощенья,
щас запустил - все нормал прошло (6 сек)
я прото раньше запускал его и у меня sql повис нафиг
я думал это он от напряги повис, а на самом деле просто так
ну это конечно решение - спасибо
но вопросы остались
т.е. как передавать данные из одного view в другой и как из ВИПа передать выборку форме
щас запустил - все нормал прошло (6 сек)
я прото раньше запускал его и у меня sql повис нафиг
я думал это он от напряги повис, а на самом деле просто так
ну это конечно решение - спасибо
но вопросы остались
т.е. как передавать данные из одного view в другой и как из ВИПа передать выборку форме
[url=http://blog.gtalex.ru]Блог GTAlex[/url]
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Вложенный SQL запрос в линк форме
1) как передать данные из одного view в другой не вопрос объяви в одном переменную(ые) и по ней позиционируй нужную(ые) тебе таблу(ы)
2) обойтись без ВИПа можно, даже нужно. view объявляй внутри твоей присоединенной формы, для того чтобы получить данные из него и воспользуйся в форме
.{table 'vView.BaseDoc'
.}
3) да и в данной конкретном случае тебе достаточно одного view
2) обойтись без ВИПа можно, даже нужно. view объявляй внутри твоей присоединенной формы, для того чтобы получить данные из него и воспользуйся в форме
.{table 'vView.BaseDoc'
.}
3) да и в данной конкретном случае тебе достаточно одного view
Жду выхода Вселенная 2.12!
Re: Вложенный SQL запрос в линк форме
C чего он будет 100 лет крутиться то? А индексы на что?
-
- Местный житель
- Сообщения: 645
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г.Королев МО ООО "Эффективная Комплексная Автоматизация- СОФТ"
Re: Вложенный SQL запрос в линк форме
Мне кажется просто задающий вопрос не в курсе еще, что Галактический SQL - не настоящий SQl и величина описания запроса (в одним или нескольких SQL) практически не играет роли и не оказыват на время никакого влияния. SQL запрос (как это в настоящем SQL) строится динамически уже в процессе обращения пользователя к значениям полей таблицы, указанной в запросе. Из описанного запроса выдеются как бы строки, относящиеся к данной таблице и все связанные с ними (стоящие слева от знака == ).
Извините, если не правильно чего понял.
Да, я думаю в потоке известен вид ДО (ну закупка там, продажа или еще что). Поэтому
логичнее, если больба за скорость
получить из потока вид ДО и сделать запрос
по индексу:
select * from
basedoc, stepdoc, katsopr, spsopr
where
((
вид_до == basedoc.viddoc and // NEW
датаоснования == basedoc.ddoc and
основание == basedoc.nodoc and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.nrec == spsopr.csopr
));
Так будет намного быстрее, если очень много ДО в базе так как без индекса перебирается вся база до совпадения!!!
Извините, если не правильно чего понял.
Да, я думаю в потоке известен вид ДО (ну закупка там, продажа или еще что). Поэтому
логичнее, если больба за скорость
получить из потока вид ДО и сделать запрос
по индексу:
select * from
basedoc, stepdoc, katsopr, spsopr
where
((
вид_до == basedoc.viddoc and // NEW
датаоснования == basedoc.ddoc and
основание == basedoc.nodoc and
basedoc.nrec == stepdoc.cbasedoc and
stepdoc.nrec == katsopr.cstepdoc and
katsopr.nrec == spsopr.csopr
));
Так будет намного быстрее, если очень много ДО в базе так как без индекса перебирается вся база до совпадения!!!
Некоммерческое общение в форуме