Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.08.2015, 10:09   #11
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

насколько смог понять все эти in select
нужно что вроде этого

есть какие-то данные из [uit_vwTechProc]
и к ним (используя соответствующие поля связей) надо достать соответствующие описания из
[Тяжмаш].[dbo].[vwObjects] p,
[Тяжмаш].[dbo].[rvwAttributes] v,
[Тяжмаш].[dbo].[vwAttrValues] e

Код:
SELECT a.idElm, b.[inIdParent], c.[_ID], d.inIdChild, 
       p._PRODUCT, v.value, e.stValue

FROM [Тяжмаш].[dbo].[uit_vwTechProc] a,
     [Тяжмаш].[dbo].[stLinks] b,
     [Тяжмаш].[dbo].[vwObjects] c,
     [Тяжмаш].[dbo].[stLinks] d,
     [Тяжмаш].[dbo].[vwObjects] p,
     [Тяжмаш].[dbo].[rvwAttributes] v,
     [Тяжмаш].[dbo].[vwAttrValues] e

where --исходный фильтр [uit_vwTechProc] a
      not exists ( SELECT 1 FROM [Тяжмаш].[dbo].[uit_vwTechProc] c,
                   [Тяжмаш].[dbo].[uit_ActiveTP] b
                   where b.idTP = c.idTP and active = 1 
                   and a.idElm = c.idElm
                 ) 
  and --присоединение [stLinks] b,
      a.idelm =b.indidchild --- a.idElm is not NULL 
  and --присоединение [vwObjects] c,
      b.inidparent=c._ID and c._TYPE = 'Маршрут'
  and --присоединение [stLinks] d,
      c._ID =d.inIdParent and d.inIdTypeRel in ( SELECT inId FROM [Тяжмаш].[dbo].[vwTypesAndTypes]
                                                 where stParentType = 'Маршрут' and stChildType <> 'Элемент маршрута'
                                               )
  and -- присоединение [vwObjects] p,
      d.inidchild =p._ID
  and -- присоединение [rvwAttributes] v,
      d.inidchild=v.idversion and v.idattr=2
  and --присоединение [vwAttrValues] e
      a.idelm =e.inidversion and e.inidattribute =162
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.08.2015 в 10:15.
evg_m вне форума Ответить с цитированием
Старый 24.08.2015, 10:49   #12
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

evg_m, все получилось! Все просто офигенно! Огромное Вам спасибо!
Один момент, как в итоговой таблице оставить только столбцы _PRODUCT, value и stValue? Я просто в блоке SELECT оставил то, что мне нужно, правильно? Ни на что не повлияет это в выборке дальнейшей?

P.S. Не могу найти где можно поставить Вам плюс в репутацию.
P.P.S. И работает секунд на 10-15 быстрее, что тоже радует. Осталось теперь понять, почему мое длиннющее полотно удалось так сократить

Последний раз редактировалось nactyx; 24.08.2015 в 10:53.
nactyx вне форума Ответить с цитированием
Старый 24.08.2015, 11:59   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Я просто в блоке SELECT оставил то, что мне нужно, правильно? Ни на что не повлияет это в выборке дальнейшей?
Да, все так.

Цитата:
Осталось теперь понять, почему мое длиннющее полотно удалось так сократить
Цитата:
есть какие-то данные из [uit_vwTechProc]
это ваш самый последний (и много раз повторенный запрос)
Цитата:
Код:
SELECT a.idElm FROM [Тяжмаш].[dbo].[uit_vwTechProc] a
                                                                                       where a.idElm is not NULL 
                                                                                         and not exists ( SELECT 1 FROM [Тяжмаш].[dbo].[uit_vwTechProc] c
                                                                                                                      , [Тяжмаш].[dbo].[uit_ActiveTP] b
                                                                                                          where b.idTP = c.idTP and active = 1 
                                                                                                            and a.idElm = c.idElm ) ) ) )
Код:
SELECT a.idElm
FROM [Тяжмаш].[dbo].[uit_vwTechProc] a
where --исходный фильтр [uit_vwTechProc] a
      not exists ( SELECT 1 FROM [Тяжмаш].[dbo].[uit_vwTechProc] c,
                   [Тяжмаш].[dbo].[uit_ActiveTP] b
                   where b.idTP = c.idTP and active = 1 
                   and a.idElm = c.idElm
                 )
Цитата:
и к ним (используя соответствующие поля связей) надо достать соответствующие описания из
[Тяжмаш].[dbo].[vwObjects] p,
[Тяжмаш].[dbo].[rvwAttributes] v,
[Тяжмаш].[dbo].[vwAttrValues] e
вот мы и добавляем по очереди по одной связи которую cможем
Код:
SELECT a.idElm, b.[inIdParent]

FROM [Тяжмаш].[dbo].[uit_vwTechProc] a,
     [Тяжмаш].[dbo].[stLinks] b,

where --исходный фильтр [uit_vwTechProc] a
      not exists ( SELECT 1 FROM [Тяжмаш].[dbo].[uit_vwTechProc] c,
                   [Тяжмаш].[dbo].[uit_ActiveTP] b
                   where b.idTP = c.idTP and active = 1 
                   and a.idElm = c.idElm
                 ) 
  and --присоединение [stLinks] b,
      a.idelm =b.indidchild --- a.idElm is not NULL
и так далее до получения нужных данных....

при каждом присоединении заодно отфильтровываем лишнее
Код:
and --присоединение [vwObjects] c,
      b.inidparent=c._ID and c._TYPE = 'Маршрут'
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.08.2015 в 12:09.
evg_m вне форума Ответить с цитированием
Старый 24.08.2015, 15:13   #14
nactyx
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 152
По умолчанию

Еще раз огромное Вам спасибо! Всё работает и всё понятно, почему именно так!
nactyx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь в составлении программы lafri Помощь студентам 0 02.06.2014 21:59
Расскажите немного о Visual C++ (в двух словах) Ksardas13 Visual C++ 4 04.04.2011 06:19
Компонент - кнопка(подробнее в теме) MeTeOpA Компоненты Delphi 4 05.09.2010 00:08
в двух словах, зацените, подскажите и т.д. ... DelphiForever Софт 0 02.11.2007 11:16