Имя: Пароль:
1C
 
Замкнуло. Получить минимальное значение в запросе
0 FarFar
 
08.11.06
17:14
Доброе время суток!
К вечеру косит шиза. У меня есть 2 справочника: ТМЦ и ЕдиницыИзмерения. ТМЦ является владельцем для Единиц. В справочнике "Единицы" один реквизит "Коэффициент" (тип число).

Мне нужно для каждого ТМЦ получить значение Единицы с минимальным коэффициентом. Причем, желательно, если в выборку пойдет ТМЦ.Ссылка, а не Единица.Владелец.Ссылка (чтобы меньше изменений делать в сложном запросе).

Хелп, плиз!
FarFar
1 PR
 
08.11.06
17:18
Выборка по единицам, группировка по владельцу, агрегатная функция минимум по коэффициенту
2 FarFar
 
08.11.06
17:34
Пример: Для ТМЦ "Мышь" ввел 2 единицы: "шт" с коэфф. =1 и "шт2" с коэфф. = 0.5
Запрос:
ВЫБРАТЬ
   ЕдиницыИзмерения.Владелец КАК Номенклатура,
   ЕдиницыИзмерения.Ссылка,
   МИНИМУМ(ЕдиницыИзмерения.Коэффициент) КАК Коэффициент
ИЗ
   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ
   ЕдиницыИзмерения.Владелец = &номенклатура

СГРУППИРОВАТЬ ПО
   ЕдиницыИзмерения.Владелец,
   ЕдиницыИзмерения.Ссылка

Выдает 2 строки с обоими единицами измерения
3 PR
 
08.11.06
17:40
А причем здесь СГРУППИРОВАТЬ?
Тебе нужны ИТОГИ.
4 asady
 
08.11.06
17:41
(2)
ВЫБРАТЬ
   ЕдиницыИзмерения.Владелец КАК Номенклатура,
   ЕдиницыИзмерения.Ссылка,
   МИНИМУМ(ЕдиницыИзмерения.Коэффициент) КАК Коэффициент
ИЗ
   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ
   ЕдиницыИзмерения.Владелец = &номенклатура
5 PR
 
08.11.06
17:43
(4) Неправильно, будет записей столько, сколько единиц, а не столько, сколько владельцев.
Тогда уж без ЕдиницыИзмерения.Ссылка,
6 FarFar
 
08.11.06
17:44
(3) То же обе вылезает, если :
ВЫБРАТЬ
   ЕдиницыИзмерения.Владелец КАК Номенклатура,
   ЕдиницыИзмерения.Ссылка КАК Ссылка,
   ЕдиницыИзмерения.Коэффициент КАК Коэффициент
ИЗ
   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ
   ЕдиницыИзмерения.Владелец = &номенклатура
ИТОГИ
   МИНИМУМ(Коэффициент)
ПО
   Номенклатура,
   Ссылка

ИТОГИ не желательно использовать. Это подзапрос -))
7 FarFar
 
08.11.06
17:45
(6) и коммент. ЕдиницыИзмерения.Ссылка КАК Ссылка не решает дела
8 asady
 
08.11.06
17:45
(5) согласен
проще так:
ВЫБРАТЬ
   ЕдиницыИзмерения.Владелец КАК Номенклатура,
   МИНИМУМ(ЕдиницыИзмерения.Коэффициент) КАК Коэффициент
ИЗ
   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ
   ЕдиницыИзмерения.Владелец = &номенклатура
9 PR
 
08.11.06
17:46
Да блин, не надо выбирать единицу измерения, когда ее по условию уже не должно быть!
ВЫБРАТЬ
   ЕдиницыИзмерения.Владелец КАК Номенклатура,
   ЕдиницыИзмерения.Коэффициент КАК Коэффициент
ИЗ
   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ
   ЕдиницыИзмерения.Владелец = &номенклатура
ИТОГИ
   МИНИМУМ(Коэффициент)
ПО
   Номенклатура
10 PR
 
08.11.06
17:47
(8) Не знаю, может и так сработает, не проверял, влом :o)
Но есть подозрение, что нет :o)
11 FarFar
 
08.11.06
17:48
(9) Результат:
Номенклатура    Коэффициент
A4Tech KBS-6 PS/2    0,500
A4Tech KBS-6 PS/2    1,000
A4Tech KBS-6 PS/2    0,500

Не летит паровоз
12 PR
 
08.11.06
17:49
А ты выборку делаешь по группировке или как?
13 FarFar
 
08.11.06
17:53
(12) в (11) - результат твоего запроса в (9)
14 FarFar
 
08.11.06
17:54
то есть, я этот запрос исполнял не как вложенный, а просто так
15 asady
 
08.11.06
18:05
(14)

вот этот запрос прекрасно отрабатывает и дает одну строку:

ВЫБРАТЬ
   ЕдиницыИзмерения.Владелец.Ссылка,
   МИНИМУМ(ЕдиницыИзмерения.Коэффициент) КАК Коэффициент
ИЗ
   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ
   ЕдиницыИзмерения.Владелец = &Номенклатура

СГРУППИРОВАТЬ ПО
   ЕдиницыИзмерения.Владелец.Ссылка
16 Neco
 
08.11.06
18:07
(15) Лучше сгруппировать по ЕдиницыИзмерения.Ссылка
17 FarFar
 
08.11.06
18:13
(16) не, по Единице измерения сгруппировать не получается.

(15) Asady, так так хорошо. Осталось только придумать, можно ли туда еще саму единицу привернуть, чтобы тоже была в результате выборки.
18 FarFar
 
08.11.06
18:14
(15) Сэнкс!
19 PR
 
08.11.06
18:37
(13) Мало того, что запрос должен быть таким, еще и выбирать нужно обходом по группировке, а не просто так.
(17) Единицу туда прикрутить нельзя ПРИНЦИПИАЛЬНО, ибо после СГРУППИРОВАТЬ ее уже нет! Только если с помощью левого соединения с единицами как-нить попробовать, где соединение по коэффициенту, но при двух единицах с одинаковыми коэффициентами непонятно, какую брать :o)
20 asady
 
08.11.06
18:53
(17)
тогда можно и так:

ВЫБРАТЬ ПЕРВЫЕ 1
   ЕдиницыИзмерения.Ссылка КАК Ссылка,
   ЕдиницыИзмерения.Коэффициент КАК Коэффициент,
   ЕдиницыИзмерения.Владелец.Ссылка
ИЗ
   Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
ГДЕ
   ЕдиницыИзмерения.Владелец = &Номенклатура

СГРУППИРОВАТЬ ПО
   ЕдиницыИзмерения.Ссылка,
   ЕдиницыИзмерения.Коэффициент

УПОРЯДОЧИТЬ ПО
   Коэффициент
21 Neco
 
08.11.06
18:54
(20) "СГРУППИРОВАТЬ ПО" уже не нужно
22 asady
 
08.11.06
18:55
(21) согласен - работает и без СГРУППИРОВАТЬ
23 Neco
 
08.11.06
18:55
ИМХО самый лучший вариант в итогами в (9) нужно только выборку делать правильно. Правда в подзапросе не использовать.
24 PR
 
08.11.06
19:24
(23) Ну почему, (15) универсальней. Если уж он работает :))
Вариант в (9) позволит разве что при необходимости кроме итоговых записей по владельцам перебрать дальше еще детальные записи по единицам. Но не более того.
25 PR
 
08.11.06
19:25
(+24) Это ессно, если в выборку добавить поле ссылка на единицу измерения :o)