Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Возможна ли такая выборка одним запросом? (число прочтений - 7375 )
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Возможна ли такая выборка одним запросом?
Ответ #15 - 30. Ноября 2011 :: 16:30
Печать  
Справочник.БригадыСборщиковДопускиПоСериям
Реквизиты: Бригада,Серия
Бригада1, Серия1
Бригада1,Серия2
Бригада2,Серия1
Бригада3,Серия2

СписокСерий: Серия1,Серия2

После выборки должна быть только Бригада1, т.к. у этой бригады есть допуск и к Серии1 и к Серии2
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Возможна ли такая выборка одним запросом?
Ответ #16 - 30. Ноября 2011 :: 16:33
Печать  
Или так

Справочник.БригадыСборщиковДопускиПоСериям
Реквизиты: Бригада,Серия
Бригада1, Серия1
Бригада1,Серия2
Бригада2,Серия1
Бригада3,Серия2
Бригада3,Серия2

СписокСерий: Серия1,Серия2

После выборки должна быть только Бригада1, т.к. у этой бригады есть допуск и к Серии1 и к Серии2
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Возможна ли такая выборка одним запросом?
Ответ #17 - 30. Ноября 2011 :: 16:39
Печать  
Приведи результат запроса :

ТекстЗапроса = "
     |SELECT distinct
     |      $СпрД.Бригада      [Бригада $Справочник.БригадыСборщиков]
     |      ,$СпрД.Серия      [Серия $Справочник.СерииНоменклатуры]
     |FROM
     |      $Справочник.БригадыСборщиковДопускиПоСериям СпрД With (NOLOCK)
     |INNER JOIN
     |      $Справочник.СерииНоменклатуры СпрС With (NOLOCK) ON СпрС.ID = $СпрД.Серия AND
     |                                                            $СпрД.Серия IN (SELECT Val From #ГруппаСерий)
     |WHERE
     |      СпрД.IsMark = 0
     |";
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Возможна ли такая выборка одним запросом?
Ответ #18 - 30. Ноября 2011 :: 16:44
Печать  
Этот запрос в первом посте.
Результат:

Бригада1, Серия1
Бригада1,Серия2
Бригада2,Серия1
Бригада3,Серия2
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Возможна ли такая выборка одним запросом?
Ответ #19 - 30. Ноября 2011 :: 16:50
Печать  
теперь такой запрос

ТекстЗапроса = " select Tabl_1.Бригада [Бригада $Справочник.БригадыСборщиков] , 1 as Считаем from
    | (
    |SELECT distinct
    |      $СпрД.Бригада as Бригада
    |      ,$СпрД.Серия
    |FROM
    |      $Справочник.БригадыСборщиковДопускиПоСериям СпрД With (NOLOCK)
    |INNER JOIN
    |      $Справочник.СерииНоменклатуры СпрС With (NOLOCK) ON СпрС.ID = $СпрД.Серия AND
    |                                                            $СпрД.Серия IN (SELECT Val From #ГруппаСерий)
    |WHERE
    |      СпрД.IsMark = 0
    | ) as Tabl_1" ;
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Возможна ли такая выборка одним запросом?
Ответ #20 - 30. Ноября 2011 :: 16:51
Печать  
А так ?

Код
Выбрать все
ТекстЗапроса = "
  |SELECT
  |	$СпрД.Бригада	[Бригада $Справочник.БригадыСборщиков], $СпрД.Серия
  |FROM
  |	$Справочник.БригадыСборщиковДопускиПоСериям СпрД  (NOLOCK)
  |WHERE
  |	СпрД.IsMark = 0
  |	AND $СпрД.Серия IN (SELECT Val From #ГруппаСерий)
  |GROUP BY
	|	$СпрД.Бригада, $СпрД.Серия
  |HAVING
    |	count($СпрД.Бригада) = (select count(*) from  #ГруппаСерий)
  |"; 

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


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Возможна ли такая выборка одним запросом?
Ответ #21 - 30. Ноября 2011 :: 16:55
Печать  
Z1
извиняюсь, но такой запрос не работает, там слово "считаем", а как правильно вы хотели написать - я не знаю
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Возможна ли такая выборка одним запросом?
Ответ #22 - 30. Ноября 2011 :: 16:57
Печать  
Foma писал(а) 30. Ноября 2011 :: 16:55:
Z1
извиняюсь, но такой запрос не работает, там слово "считаем", а как правильно вы хотели написать - я не знаю


Это алияс, и.. всё работает
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Возможна ли такая выборка одним запросом?
Ответ #23 - 30. Ноября 2011 :: 17:00
Печать  
Foma писал(а) 30. Ноября 2011 :: 16:55:
Z1
извиняюсь, но такой запрос не работает, там слово "считаем", а как правильно вы хотели написать - я не знаю

так работает или нет ???
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Возможна ли такая выборка одним запросом?
Ответ #24 - 30. Ноября 2011 :: 17:05
Печать  
Сорри, работает.
Результат:

Бригада1, 1
Бригада1, 1
Бригада2, 1
Бригада3, 1
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Возможна ли такая выборка одним запросом?
Ответ #25 - 30. Ноября 2011 :: 17:08
Печать  
Eprst
Ваш запрос возвращает пустую выборку
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Возможна ли такая выборка одним запросом?
Ответ #26 - 30. Ноября 2011 :: 17:12
Печать  
а теперь такой запрос


ТекстЗапроса = " select Tabl_2.Бригада [Бригада $Справочник.БригадыСборщиков] , sum(Считаем)
   |from (
   | select Tabl_1.Бригада as Бригада  , 1 as Считаем from
   | (
   |SELECT distinct
   |      $СпрД.Бригада as Бригада
   |      ,$СпрД.Серия
   |FROM
   |      $Справочник.БригадыСборщиковДопускиПоСериям СпрД With (NOLOCK)
   |INNER JOIN
   |      $Справочник.СерииНоменклатуры СпрС With (NOLOCK) ON СпрС.ID = $СпрД.Серия AND
   |                                                            $СпрД.Серия IN (SELECT Val From #ГруппаСерий)
   |WHERE
   |      СпрД.IsMark = 0
   | ) as Tabl_1
   | ) as Tabl_2
   |group by Tabl_2.Бригада" ;
  
Наверх
 
IP записан
 
Foma
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 61
Зарегистрирован: 16. Сентября 2010
Re: Возможна ли такая выборка одним запросом?
Ответ #27 - 30. Ноября 2011 :: 17:21
Печать  
Z1
Результат:
Результат:

Бригада1, 2
Бригада2, 1
Бригада3, 1
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Возможна ли такая выборка одним запросом?
Ответ #28 - 30. Ноября 2011 :: 17:25
Печать  
ну тогда скорее всего вот твой окончательный запрос
Код
Выбрать все
КолвоРезультатов = 2; // здесь это число сколько значений в списке #ГруппаСерий
ТекстЗапроса = " select Tabl_2.Бригада [Бригада $Справочник.БригадыСборщиков]
  | , sum(Считаем)
  |from (
  | select Tabl_1.Бригада as Бригада  , 1 as Считаем from
  | (
  |SELECT distinct
  |	$СпрД.Бригада as Бригада
  |	,$СпрД.Серия
  |FROM
  |	$Справочник.БригадыСборщиковДопускиПоСериям СпрД With (NOLOCK)
  |INNER JOIN
  |	$Справочник.СерииНоменклатуры СпрС With (NOLOCK) ON СпрС.ID = $СпрД.Серия AND
  |										$СпрД.Серия IN (SELECT Val From #ГруппаСерий)
  |WHERE
  |	СпрД.IsMark = 0
  | ) as Tabl_1
  | ) as Tabl_2
  |group by Tabl_2.Бригада
  |having sum(Считаем) >= " + СокрЛП(КолвоРезультатов ) ;
 

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Возможна ли такая выборка одним запросом?
Ответ #29 - 30. Ноября 2011 :: 17:28
Печать  
вот только inner join не нужен там вовсе.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать