![]() |
|
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 перепутал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |