|
Как отобрать минимальные значения в запросе? | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
11.04.12
✎
11:16
|
На даный момент показывает так :
Номенклатура1 Хароактеристика1 25 Поставщик1 Номенклатура1 Хароактеристика1 30 Поставщик2 Номенклатура1 Хароактеристика1 35 Поставщик3 Надо отобрать с самым меньшим значением по цена: Номенклатура1 Хароактеристика1 25 Поставщик1 Что в запросе шаманить? |
|||
1
zak555
11.04.12
✎
11:17
|
Мин () ?
|
|||
2
Wobland
11.04.12
✎
11:18
|
сгруппировать по минимуму
|
|||
3
guitar_player
11.04.12
✎
11:18
|
группировка по Номенклатура1 Хароактеристика1 , минимум по цене. потом соединение с первоначальной таблицей для получения поставщика
|
|||
4
Широкий
11.04.12
✎
11:18
|
(1)(2) неуд
|
|||
5
Широкий
11.04.12
✎
11:22
|
1. отсортировать по количеству и выбрать первые 1
2. Запрос условие количество в (Выбрать мин количество) |
|||
6
qeos
11.04.12
✎
11:25
|
или
1. сгруппировать по минимуму без поставщика 2. соединить по количеству + поставщик.. |
|||
7
Boudybuilder
11.04.12
✎
11:25
|
Спасибо(3) !
(3)(5) Два варианта... Который лучше? |
|||
8
qeos
11.04.12
✎
11:25
|
(3) черт.. не дочитал ))
|
|||
9
Широкий
11.04.12
✎
11:29
|
(7) Мой :) в (7) неверно
|
|||
10
Широкий
11.04.12
✎
11:31
|
В (5), если не понятно, два варианта решения
|
|||
11
Boudybuilder
11.04.12
✎
11:35
|
(3)(6) Первую таблицу сделал. А Как соединить?
ВЫБРАТЬ РАЗРЕШЕННЫЕ ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры, МИНИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Период >= &ДатаУстановкиЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры АВТОУПОРЯДОЧИВАНИЕ Первую таблицу сделал... |
|||
12
Boudybuilder
11.04.12
✎
11:37
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры, МИНИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) КАК Цена, ЦеныНоменклатурыКонтрагентовСрезПоследних1.ТипЦен ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Период >= &ДатаУстановкиЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыКонтрагентовСрезПоследних1 ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Регистратор = ЦеныНоменклатурыКонтрагентовСрезПоследних1.Регистратор СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры, ЦеныНоменклатурыКонтрагентовСрезПоследних1.ТипЦен АВТОУПОРЯДОЧИВАНИЕ Чтото так не конает... |
|||
13
FIXXXL
11.04.12
✎
11:43
|
(5) если б в базе была одна номенклатура...
|
|||
14
Boudybuilder
11.04.12
✎
11:46
|
(11)????????
|
|||
15
Широкий
11.04.12
✎
11:46
|
ВЫБРАТЬ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры, ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Период >= &ДатаУстановкиЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ГДЕ (ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) В (ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, МИНИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Период >= &ДатаУстановкиЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) |
|||
16
FIXXXL
11.04.12
✎
11:50
|
ВЫБРАТЬ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры, ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена, ЦеныНоменклатурыКонтрагентовСрезПоследних.Регистратор.Контрагент ИЗ (ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, МИНИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&ДатаСреза, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры И ВложенныйЗапрос.Цена = ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена |
|||
17
Широкий
11.04.12
✎
11:52
|
(16) Тоже самое написал :)
|
|||
18
FIXXXL
11.04.12
✎
11:59
|
(17) но твой запрос у меня нифига не кажет :(
а мой работает как надо я давно таким макаром пишу... |
|||
19
DrHiHi
11.04.12
✎
12:06
|
(0) не слушай (15)(16), им по 2 бала)))
не учли, то что цена может быть одинаковая у двух поставщиков %)) |
|||
20
DrHiHi
11.04.12
✎
12:08
|
(19)затупил %))
|
|||
21
Boudybuilder
11.04.12
✎
12:10
|
(19) И как с этим боремся?
|
|||
22
DimVad
11.04.12
✎
12:16
|
Ну, Вам нужен список поставщиков с минимальными ценами ? Логично, чтобы выводились все поставщики с одинаковой ценой, если она минимальна. Менеджер будет принимать решение, где покупать. Правда, мне кажется, что предложенные тут варианты запросов какие-то громоздкие...
|
|||
23
DrHiHi
11.04.12
✎
12:19
|
не учтен пересчет, если в другой валюте приходил товар и не учтена единица измерения))) но если захотеть, то можно реализовать
ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен.Владелец КАК Контрагент, ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен, ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.ХарактеристикаНоменклатуры, ВложенныйЗапрос.Цена ИЗ (ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ВложенныйЗапрос.Цена КАК Цена, МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период ИЗ (ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, МИНИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыКонтрагентовСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры И ВложенныйЗапрос.Цена = ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.ХарактеристикаНоменклатуры, ВложенныйЗапрос.Цена) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры И ВложенныйЗапрос.Период = ЦеныНоменклатурыКонтрагентовСрезПоследних.Период И ВложенныйЗапрос.Цена = ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена |
|||
24
Boudybuilder
11.04.12
✎
12:20
|
(22) А что же тогда предложите?
|
|||
25
DimVad
11.04.12
✎
12:34
|
Ну вот я простенький примерчик на пробной базе сделал. Мне кажется, все просто до мычания :
1. Получаем табличку с минимальными ценами по номенклатурам и характеристикам: ВЫБРАТЬ МИНИМУМ(Цены.Цена) КАК Цена, Цены.Номенклатура, Цены.Характеристика ПОМЕСТИТЬ МинимальныеЦены ИЗ РегистрСведений.Цены КАК Цены СГРУППИРОВАТЬ ПО Цены.Номенклатура, Цены.Характеристика ; 2. Левым соединением выдергиваем всез поставщиков : ВЫБРАТЬ МинимальныеЦены.Цена, МинимальныеЦены.Номенклатура, МинимальныеЦены.Характеристика, Цены.Поставщик ИЗ МинимальныеЦены КАК МинимальныеЦены ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены ПО МинимальныеЦены.Номенклатура = Цены.Номенклатура И МинимальныеЦены.Характеристика = Цены.Характеристика И МинимальныеЦены.Цена = Цены.Цена Усе. Если надо, легко сделать так, чтобы запрос выдавал одного поставщика произвольно (если их несколько с одной ценой). Но итоговый запрос - прост как мычание и его легко менять... |
|||
26
Boudybuilder
11.04.12
✎
13:24
|
(19) Если цена одинаковая , то показывает две строки. Как их свернуть в одну. ?!
|
|||
27
guitar_player
11.04.12
✎
13:25
|
(26) я бы строки в запросе пронумеровал а потом с этим делал то, что я вам написал, т.е. привязывался бы не по цене а по ном.,характеристики, номеру строки
|
|||
28
DimVad
11.04.12
✎
13:31
|
Мне кажется, что лучше ничего не нумеровать... сейчас, пару минут, мне бухи звонят...
|
|||
29
DimVad
11.04.12
✎
13:36
|
Под "сверткой" понимается - взять любую строку. Ну, самое простое:
ВЫБРАТЬ МинимальныеЦены.Цена, МинимальныеЦены.Номенклатура, МинимальныеЦены.Характеристика, МАКСИМУМ(Цены.Поставщик) КАК Поставщик ИЗ МинимальныеЦены КАК МинимальныеЦены ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены КАК Цены ПО МинимальныеЦены.Номенклатура = Цены.Номенклатура И МинимальныеЦены.Характеристика = Цены.Характеристика И МинимальныеЦены.Цена = Цены.Цена СГРУППИРОВАТЬ ПО МинимальныеЦены.Номенклатура, МинимальныеЦены.Характеристика, МинимальныеЦены.Цена |
|||
30
guitar_player
11.04.12
✎
13:38
|
(29) он сказал, у него цены дублируются, не хватает уник. идентификатора
|
|||
31
DimVad
11.04.12
✎
13:43
|
Ну да, у него вывелось две строки с одинаковыми Номенклатурой, Характеристикой, Ценой и разными поставщиками. Вот я и предложил группировку по Ном, Хар, и Цене, а поставщ. - любого. Я создал две строки в пробной базе в рег. сведений таком, как он написал в первом посте. Все работает. Т.е. в предыдущем примере - две строки с разными поставщиками, сейчас - все o'k. По крайней мере на той структуре, что ТС описал вначале.
|
|||
32
Boudybuilder
11.04.12
✎
13:46
|
ВЫБРАТЬ
ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры, ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена, ЦеныНоменклатурыКонтрагентовСрезПоследних.Регистратор.Контрагент ИЗ (ВЫБРАТЬ ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, МИНИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) КАК Цена ИЗ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Период >= &ДатаУстановкиЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Период >= &ДатаУстановкиЦен) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры И ВложенныйЗапрос.Цена = ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена СГРУППИРОВАТЬ ПО ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура, ЦеныНоменклатурыКонтрагентовСрезПоследних.ХарактеристикаНоменклатуры, ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена, ЦеныНоменклатурыКонтрагентовСрезПоследних.Регистратор.Контрагент Не сворачивает... |
|||
33
DrHiHi
11.04.12
✎
13:54
|
(32) попроюуй 23
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |