Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Запрос ограничивается количеством строк подзапроса (число прочтений - 4389 )
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Запрос ограничивается количеством строк подзап
Ответ #15 - 21. Августа 2008 :: 08:44
Печать  
или так
Код
Выбрать все
SELECT
  Номенклатура.ID [Ссылка $Справочник.Номенклатура] ,
  $ПартииНаличие.ДатаПартии,
  $ПартииНаличие.Количество,
  $ПартииНаличие.СуммаРуб
FROM $Справочник.Номенклатура AS Номенклатура
LEFT JOIN (
  SELECT
    $ПартииНаличие.Номенклатура AS Номенклатура,
    MAX($ПартииНаличие.ДатаПартии) AS ДатаПоследнейПартии
  FROM $Регистр.ПартииНаличие AS ПартииНаличие
  WHERE $ПартииНаличие.КодОперации = :КодОперации
  GROUP BY $ПартииНаличие.Номенклатура
) AS ПоследниеПартии ON ПоследниеПартии.Номенклатура = Номенклатура.ID
LEFT JOIN $Регистр.ПартииНаличие AS ПартииНаличие ON $ПартииНаличие.КодОперации = :КодОперации
  AND $ПартииНаличие.Номенклатура = Номенклатура.ID
  AND $ПартииНаличие.ДатаПартии = ПоследниеПартии.ДатаПоследнейПартии
WHERE Номенклатура.ID IN (SELECT val FROM #СписокНоменклатуры) 

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос ограничивается количеством строк подзап
Ответ #16 - 21. Августа 2008 :: 10:29
Печать  
DmitrO писал(а) 21. Августа 2008 :: 08:44:
или так
Код
Выбрать все
SELECT
  Номенклатура.ID [Ссылка $Справочник.Номенклатура] ,
  $ПартииНаличие.ДатаПартии,
  $ПартииНаличие.Количество,
  $ПартииНаличие.СуммаРуб
FROM $Справочник.Номенклатура AS Номенклатура
LEFT JOIN (
  SELECT
    $ПартииНаличие.Номенклатура AS Номенклатура,
    MAX($ПартииНаличие.ДатаПартии) AS ДатаПоследнейПартии
  FROM $Регистр.ПартииНаличие AS ПартииНаличие
  WHERE $ПартииНаличие.КодОперации = :КодОперации
  GROUP BY $ПартииНаличие.Номенклатура
) AS ПоследниеПартии ON ПоследниеПартии.Номенклатура = Номенклатура.ID
LEFT JOIN $Регистр.ПартииНаличие AS ПартииНаличие ON $ПартииНаличие.КодОперации = :КодОперации
  AND $ПартииНаличие.Номенклатура = Номенклатура.ID
  AND $ПартииНаличие.ДатаПартии = ПоследниеПартии.ДатаПоследнейПартии
WHERE Номенклатура.ID IN (SELECT val FROM #СписокНоменклатуры) 



+10
-----------------------------------------------------------

для (0) твой внутр запрос
Код
Выбрать все
(SELECT TOP 1 $ПартииНаличие.Количество Количество
	|	FROM $Регистр.ПартииНаличие AS ПартииНаличие
	|	WHERE ($ПартииНаличие.КодОперации = :КодОперации)
	|		AND  $ПартииНаличие.Номенклатура  =  Номенклатура.ID
	|	ORDER BY $ПартииНаличие.ДатаПартии DESC )
 


сделает следущее получит ВЕСЬ набор, упорядочит его и только потом
оставит только первую строку - что есть очень неоптимально.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать