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


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
вложенный запрос
16. Июня 2009 :: 09:06
Печать  
Имею две таблицы:

------------
Элемент1
------------
Элемент2
------------

И подчиненная:

----------------------------------
Владелец | Имя  | Значение     |
----------------------------------
Элемент1 | Имя1 | Элемент2     |
----------------------------------
Элемент1 | Имя1 | 2           |
----------------------------------
Элемент2 | Имя1 | 1            |
----------------------------------
Элемент2 | Имя2 | 2            |
----------------------------------
Элемент3 | Имя2 | 2            |
----------------------------------

Имея исходное значение = элемент1 хочу получить в выборку
все элементы, находящиеся в зоне видимости Элемента1 с полем значение равным двум (Значение = 2)
,т.е. в данном случае результат выборки Элемент1 и элемент2.

наверняка требуется вложенный запрос но опыта в написании на скл маловато поэтому придумать не могу. Нуждаюсь в помощи. Заранее благодарен.
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

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


     
     Запрос. УстановитьТекстовыйПараметр ("УсловиеТО", ВыбПечать);
     Запрос. УстановитьТекстовыйПараметр ("ВыбНорма", ВыбНорма);
     Запрос. УстановитьТекстовыйПараметр ("УсловиеПродукция", ВыбПродукция);

пробовал так выборка пуста
  
Наверх
 
IP записан
 
Злой Бобр
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Украина, Кривой Рог
Зарегистрирован: 07. Марта 2009
Пол: Мужской
Re: вложенный запрос
Ответ #2 - 16. Июня 2009 :: 09:41
Печать  
Справочник.НормыРасходов подчинен Справочник.Номенклатура.
Что дальше? Какое значение в каком справочнике = 2?
  

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


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #3 - 16. Июня 2009 :: 09:44
Печать  
Злой Бобр писал(а) 16. Июня 2009 :: 09:41:
Справочник.НормыРасходов подчинен Справочник.Номенклатура.
Что дальше? Какое значение в каком справочнике = 2?


здесь проверка
|      AND спрТО.ID = :ВыбПечать
то есть проверка на наличие технологической операции в нормах расходов, а технологические операции лежат в третей таблице((
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: вложенный запрос
Ответ #4 - 16. Июня 2009 :: 09:44
Печать  
Код
Выбрать все
|	$Справочник.ТехОперации as спрТО ON спрТО.ID = Right($Спр.Элемент,9) AND спрТО.ID = :ВыбПечать
|LEFT JOIN
|	$Справочник.Номенклатура as спрПрод ON спрПрод.ID = Right($Спр.Элемент,9)

 

  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #5 - 16. Июня 2009 :: 09:47
Печать  
объясню на русском:
продукция состоит из узлов и/или технологических операций нужно определить есть ли в составе нормативов заданной продукции или ее узлов данная технологическая операция.
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #6 - 16. Июня 2009 :: 09:48
Печать  
leov-001 писал(а) 16. Июня 2009 :: 09:44:
Код
Выбрать все
|	$Справочник.ТехОперации as спрТО ON спрТО.ID = Right($Спр.Элемент,9)
|LEFT JOIN
|	$Справочник.Номенклатура as спрПрод ON спрПрод.ID = Right($Спр.Элемент,9)

 


не думаю, что это принципиально.
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: вложенный запрос
Ответ #7 - 16. Июня 2009 :: 09:51
Печать  
OnCheck писал(а) 16. Июня 2009 :: 09:48:
leov-001 писал(а) 16. Июня 2009 :: 09:44:
Код
Выбрать все
|	$Справочник.ТехОперации as спрТО ON спрТО.ID = Right($Спр.Элемент,9)
|LEFT JOIN
|	$Справочник.Номенклатура as спрПрод ON спрПрод.ID = Right($Спр.Элемент,9)

 


не думаю, что это принципиально.


Код
Выбрать все
$Справочник.ТехОперации as спрТО ON спрТО.ID = Right($Спр.Элемент,9) AND спрТО.ID = :ВыбПечать 


  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #8 - 16. Июня 2009 :: 09:53
Печать  
без узлов все просто:
ТекстЗапроса = "
|SELECT
|      Спр.ID as [ТекущийЭлемент $Справочник.НормыРасходов],
|      Спр.PARENTEXT as [Владелец $Справочник.Номенклатура],
|       $Спр.Элемент as [Элемент $Справочник]
|FROM
|      $Справочник.НормыРасходов as Спр
|WHERE
|      Спр.IsFolder = 2 AND
|      Спр.IsMark = ''
|      AND $Спр.Элемент = :УсловиеТО~
|      AND Спр.PARENTEXT = :УсловиеПродукция
|";
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #9 - 16. Июня 2009 :: 09:58
Печать  
Код
Выбрать все
$Справочник.ТехОперации as спрТО ON спрТО.ID = Right($Спр.Элемент,9) AND спрТО.ID = :ВыбПечать 


[/quote]
можно и так, но не фильтруются элементы справочника нормы расходов подчиненные продукции, которая является узлами для выбранного комплекта
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #10 - 16. Июня 2009 :: 10:01
Печать  
OnCheck писал(а) 16. Июня 2009 :: 09:53:
без узлов все просто:
ТекстЗапроса = "
|SELECT
|      Спр.ID as [ТекущийЭлемент $Справочник.НормыРасходов],
|      Спр.PARENTEXT as [Владелец $Справочник.Номенклатура],
|       $Спр.Элемент as [Элемент $Справочник]
|FROM
|      $Справочник.НормыРасходов as Спр
|WHERE
|      Спр.IsFolder = 2 AND
|      Спр.IsMark = ''
|      AND $Спр.Элемент = :УсловиеТО~
|      AND Спр.PARENTEXT = :УсловиеПродукция
|";


вот если бы упаковать ID выбранной продукции и принадлежащих ей узлов в список, а потом прогнать по этому списку этот запрос тогда наверное получилось бы но как это сделать?
  
Наверх
 
IP записан
 
leov-001
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: вложенный запрос
Ответ #11 - 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 $Справочник.Номенклатура)
|";
 

  
Наверх
 
IP записан
 
Злой Бобр
Junior Member
**
Отсутствует



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

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


1C++ rocks!

Сообщений: 150
Зарегистрирован: 05. Марта 2009
Re: вложенный запрос
Ответ #13 - 16. Июня 2009 :: 10:10
Печать  
Злой Бобр писал(а) 16. Июня 2009 :: 10:08:
Я чего-то туплю.
Есть 3 справочника: Номенклатура, НормыРасходов (подчинен Номенклатура), ТехОперации (кому подчинен ?).
В итоге я так понимаю нужно отобрать список Номенклатуры при условии что - ??? (вот тут подробнее)


Я понял что НормыРасходов и ТехОперации -->> подчинен Номенклатура
  
Наверх
 
IP записан
 
OnCheck
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 130
Зарегистрирован: 12. Декабря 2007
Re: вложенный запрос
Ответ #14 - 16. Июня 2009 :: 10:15
Печать  
Злой Бобр писал(а) 16. Июня 2009 :: 10:08:
Я чего-то туплю.
Есть 3 справочника: Номенклатура, НормыРасходов (подчинен Номенклатура), ТехОперации (кому подчинен ?).
В итоге я так понимаю нужно отобрать список Номенклатуры при условии что - ??? (вот тут подробнее)


ТехОперации не подчинен а связан с Нормами 1 ко многим (т.е. технологическая операция печать может быть для разной продукции)
но продукция может состоять так же из узлов, например комплекты, где узлами являются другая продукция например спортивный костюм состоит из штанов и куртки.
Нужно сказать есть ли в данной продукции данная технологическая операция , даже если это комплект и данная технологическая операция принадлежит его узлу.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать