Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) вложенный запрос (число прочтений - 4840 )
Злой Бобр
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Украина, Кривой Рог
Зарегистрирован: 07. Марта 2009
Пол: Мужской
Re: вложенный запрос
Ответ #15 - 16. Июня 2009 :: 10:20
Печать  
Т.е. ТехОперации это НормыРасходов.Реквизит ? Если да то как он правильно называется и какой тип (вид) имеет? А то что-то непонятно в коде.
  

Если у вас есть деньги тогда мы идем к вам!!!
Наверх
ICQ  
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #16 - 16. Июня 2009 :: 10:20
Печать  
Номенклатура:

------------
штаны
------------
куртка
------------
костюм
------------

ТехОперации:

------------
печать
------------
пошив
------------

НормыРасходов:

----------------------------------
Владелец      | Имя      | Значение|
----------------------------------
костюм      | Имя1| куртка      |
----------------------------------
костюм      | Имя1| штаны    |
----------------------------------
куртка      | Имя1| печать   |
----------------------------------
куртка      | Имя2| пошив    |
----------------------------------
штаны      | Имя3| пошив    |
----------------------------------

хочу знать где есть печать?
Результат куртка и костюм
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #17 - 16. Июня 2009 :: 10:25
Печать  
leov-001 писал(а) 16. Июня 2009 :: 10:04:
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|  Спр.ID as [ТекущийЭлемент $Справочник.НормыРасходов]
|, Спр.PARENTEXT as [Владелец $Справочник.Номенклатура]
|, $Спр.Элемент as [Элемент $Справочник]
|, спрПрод.ID  as ЭлементИД
|FROM
|  $Справочник.НормыРасходов as Спр
|  LEFT JOIN $Справочник.ТехОперации as спрТО ON $ВидСправочника36.ТехОперации+спрТО.ID = $Спр.Элемент AND спрТО.ID = :ВыбПечать
|  LEFT JOIN $Справочник.Номенклатура as спрПрод ON $ВидСправочника36.Номенклатура + спрПрод.ID = $Спр.Элемент
|WHERE
|  Спр.IsFolder = 2 AND
|  Спр.IsMark = ''  AND
|  Спр.PARENTEXT = :УсловиеПродукция OR
|  Спр.PARENTEXT IN (SELECT ID From $Справочник.Номенклатура)
|";
 


здесь выдал все содержимое справочника Нормы расходов, долго отрабатывал 300 тыс строк.
  
Наверх
 
IP записан
 
Злой Бобр
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Украина, Кривой Рог
Зарегистрирован: 07. Марта 2009
Пол: Мужской
Re: вложенный запрос
Ответ #18 - 16. Июня 2009 :: 10:33
Печать  
Ну наконец я понял. Щас пойду пообедаю и потом нарисую тебе запрос.
  

Если у вас есть деньги тогда мы идем к вам!!!
Наверх
ICQ  
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #19 - 16. Июня 2009 :: 10:37
Печать  
Злой Бобр писал(а) 16. Июня 2009 :: 10:33:
Ну наконец я понял. Щас пойду пообедаю и потом нарисую тебе запрос.

ОЧЕНЬ РАД  Очень довольный  только я счас убегаю поэтому заранее благодарен, надеюсь увидеть завтра, потому как подозреваю, что будут вопросы))) ведь учусь.
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: вложенный запрос
Ответ #20 - 16. Июня 2009 :: 14:31
Печать  
Типа такого?
SELECT Элемент FROM Справочник Where Значение=Печать
UNION ALL
SELECT Элемент FROM Справочник Where Значение in (SELECT Элемент FROM Справочник Where Значение=Печать)
  
Наверх
ICQ  
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #21 - 17. Июня 2009 :: 03:42
Печать  
Salimbek писал(а) 16. Июня 2009 :: 14:31:
Типа такого?
SELECT Элемент FROM Справочник Where Значение=Печать
UNION ALL
SELECT Элемент FROM Справочник Where Значение in (SELECT Элемент FROM Справочник Where Значение=Печать)


что то типа того , только второй селект нужен с джоином
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #22 - 17. Июня 2009 :: 03:45
Печать  
вот так сделал - помогло, но можно же, как то оптимизировать!?
|SELECT
|      Спр.ID as [ТекущийЭлемент $Справочник.НормыРасходов],
|      Спр.PARENTEXT as [Владелец $Справочник.Номенклатура],
|      $Спр.Элемент as [Элемент $Справочник]
|FROM
|      $Справочник.НормыРасходов as Спр
|WHERE
|      Спр.IsFolder = 2 AND
|      Спр.IsMark = ''
|      AND $Спр.Элемент = :ВыбПечать~
|      AND Спр.PARENTEXT = :УсловиеПродукция
|Union All
|SELECT
|      Спр.ID as [ТекущийЭлемент $Справочник.НормыРасходов],
|      Спр.PARENTEXT as [Владелец $Справочник.Номенклатура],
|      $Спр.Элемент as [Элемент $Справочник]
|FROM
|      $Справочник.НормыРасходов as Спр
|WHERE
|      Спр.IsFolder = 2 AND
|      Спр.IsMark = ''
|      AND $Спр.Элемент = :ВыбПечать~
|      AND Спр.PARENTEXT IN
|(
|SELECT
|      спрПрод.ID  as ЭлементИД
|FROM
|      $Справочник.НормыРасходов as Спр
|LEFT JOIN
|      $Справочник.Номенклатура as спрПрод ON ($ВидСправочника36.Номенклатура + спрПрод.ID = $Спр.Элемент)
|WHERE
|      Спр.IsFolder = 2 AND
|      Спр.IsMark = ''
|AND      
|      Спр.PARENTEXT = :УсловиеПродукция
|      OR Спр.PARENTEXT = спрПрод.ID)
|";
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #23 - 17. Июня 2009 :: 07:31
Печать  
Спасибо напарнику! Оптимизированный вариант того же самого:
ТекстЗапроса = "
|SELECT
|      СпрН.ID as [ТекЭл $Справочник.Номенклатура]
|      ,СпрНК.ID as [ТекЭлК $Справочник.Номенклатура]
|FROM
|      $Справочник.ТехОперации as СпрТО
|JOIN
|      $Справочник.НормыРасходов as СпрНР ON ($СпрНР.Элемент = $ВидСправочника36.ТехОперации + СпрТО.ID)
|JOIN
|      $Справочник.Номенклатура as СпрН ON (СпрНР.PARENTEXT=СпрН.ID)
|LEFT JOIN
|      $Справочник.НормыРасходов as СпрНРК ON ($СпрНРК.Элемент = $ВидСправочника36.Номенклатура + СпрН.ID)
|LEFT JOIN
|      $Справочник.Номенклатура as СпрНК ON (СпрНРК.PARENTEXT=СпрНК.ID)
|WHERE
|      СпрНР.IsFolder = 2
|      ANDСпрНР.IsMark = ''
|      СпрТО.ID = :ВыбПечать
|      AND (СпрН.ID = :УсловиеПродукция
|      OR  СпрНК.ID = :УсловиеПродукция
|)
|";
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать