Имя: Пароль:
1C
1C 7.7
v7: 1С++ Найти Min SQL запросом
0 Андрей_Андреич
 
naïve
24.08.12
08:15
Создал таблицу с полями "Комплект", "Комплектующее", "Норма", "Остаток".
Теперь хочется узнать, сколько каких комплектов можно собрать.
Пишу "Select Комплект, Min(Остаток/Норма) As МожноСобрать Group By Комплект".
Возвращает первый попавшийся результат  Остаток/Норма, а не минимальный по комплекту.
Подскажите, как надо?
1 mehfk
 
24.08.12
08:26
курить
SELECT TOP, ORDER BY и HAVING
2 Андрей_Андреич
 
naïve
24.08.12
08:26
Из просматривающих тему минимум половина знают ответ. И тишина :(
3 Андрей_Андреич
 
naïve
24.08.12
08:27
(1) Думал про такое, но надеялся на более красивое решение.
4 nicxxx
 
24.08.12
08:27
тебе в (1) ответ дали, чего еще ждешь?
5 m-serg74
 
24.08.12
10:11
(4) он же ответил - более красивого решения)))
6 olegves
 
24.08.12
10:12
(0) добавь GROUP BY Комплект
7 Андрей_Андреич
 
naïve
24.08.12
10:13
(6) Так есть уже - не помогло.
8 Ненавижу 1С
 
гуру
24.08.12
10:14
"Теперь хочется узнать, сколько каких комплектов можно собрать. "
сначала поясни смысл полей
9 Андрей_Андреич
 
naïve
24.08.12
10:16
(8)
"Комплект" - изделие, которое надо собрать
"Комплектующее" - соответственно то, из чего собираем
"Норма" - сколько комплектующего входит в комплект
"Остаток" - сколько комплектующего в наличии
10 olegves
 
24.08.12
10:24
(9) логика запроса верна, нужен весь запрос, - диавол прячется в деталях
11 Андрей_Андреич
 
naïve
24.08.12
10:26
|Select $Справочник.Комплектация.Товар Состав
   |, $Справочник.Комплектация.Количество Норма
   |, Комплектация.ParentExt Товар
   |, @НулевоеКоличество ВПродаже
   |, @НулевоеКоличество Резерв
   |Into "+ТаблицаКомплектации+"
   |From $Справочник.Комплектация Комплектация
   |Where Комплектация.ParentExt In (Select Val From "+ТаблицаНоменклатуры+")
   |And Комплектация.ParentExt In (Select Val From "+Таблица00К+")
   |Union All
   |Select $Справочник.Номенклатура.Арматура Состав
   |, 1 Норма
   |, Номенклатура.ID Товар
   |, @НулевоеКоличество ВПродаже
   |, @НулевоеКоличество Резерв
   |From $Справочник.Номенклатура Номенклатура
   |Where Номенклатура.ID In (Select Val From "+ТаблицаНоменклатуры+")
   |And Номенклатура.ID In (Select Val From "+Таблица00К+")
   |Order By Товар, Состав
   |Update "+ТаблицаКомплектации+"
   |    Set ВПродаже = Выборка.Впродаже, Резерв = "+?(ИсключаяРезерв=1,"Выборка.Резерв","0")+"
   |    From "+ТаблицаКомплектации+" ТаблицаКомплектации
   |Left join
   |(Select Товар, РегПартии.ВПродажеОстаток ВПродаже, РегПартии.РезервОстаток Резерв
   |From $РегистрОстатки.Партии(
   |,,Товар In (Select Distinct Состав From "+ТаблицаКомплектации+"),,) РегПартии)
   |Выборка on ТаблицаКомплектации.Состав=Выборка.Товар
   |Select Distinct Товар
   |, Min(Round((ВПродаже-Резерв)/Норма,0,1)) МожноСобрать
   |Into "+ТаблицаОстатковКомплектов+"
   |From "+ТаблицаКомплектации+" Комплектация
   |Group By Товар
12 Ёпрст
 
гуру
24.08.12
10:34
тебе нужно выкинуть Min(Round((ВПродаже-Резерв)/Норма,0,1)

и воткнуть order by Round((ВПродаже-Резерв)/Норма,0,1)
13 Андрей_Андреич
 
naïve
24.08.12
10:38
(12) А группировать по "Товар" без "Состав"?
И "Top 1"?
14 olegves
 
24.08.12
10:38
(11) тебе Таблицу комплектации пред Update надо бы сгруппировать по Состав,Товар, а вместо @НулевоеКоличество пиши просто 0 (ноль)
15 Ёпрст
 
гуру
24.08.12
10:41
Distinct  выкини еще из фильтра в ВТ
16 olegves
 
24.08.12
10:41
(12) че за хрень ты пишешь?
17 Ёпрст
 
гуру
24.08.12
10:41
+ воткни хоть 1 измерение в ВТ (чтоб не все поля брал)
18 olegves
 
24.08.12
10:42
(11) Distinct из последнего Select убери - он там не нужен
19 Андрей_Андреич
 
naïve
24.08.12
10:43
(15) ок - я его потом воткнул
(17) ок, хотя вроде не мешает
20 Ёпрст
 
гуру
24.08.12
10:47
(19) это, а почему ты пишешь group by товар, а в (0) спрашиваешь минимум про комплект ?
21 Ёпрст
 
гуру
24.08.12
10:47
+20 это в самом последнем запросе.
22 Андрей_Андреич
 
naïve
24.08.12
10:49
(20) Я в теме переобозвал, чтобы более понятно было. Товар - это комплект, состав - комплектующее.
23 olegves
 
24.08.12
10:49
(21) да в последнем запросе замени Товар на Состав
24 Ёпрст
 
гуру
24.08.12
10:50
+ у тебя будет же куча дублей с "товаром", где комплект разный..
25 olegves
 
24.08.12
10:52
+ (23) хотя скорее всего у тебя в 1-м селекте 1 и 3 поле перепутаны. Похоже, надо так:


   |Select Комплектация.ParentExt Состав
   |, $Справочник.Комплектация.Количество Норма
   |, $Справочник.Комплектация.Товар Товар
26 Андрей_Андреич
 
naïve
24.08.12
10:57
(23-25) Тут все правильно. Справочник "Комплектация" владелец - товар, который надо собрать, а реквизит справочника "товар" - это состав набора, т.е. комплектующие, из которых собираются
27 olegves
 
24.08.12
13:35
(26) тогда после UNION перепутал
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn