|
Интересная задачка по запросам в 1с. | ☑ | ||
---|---|---|---|---|
0
Dionis Sergeevich
03.12.14
✎
12:57
|
есть таблица примерно с таким содержанием
Номенклатура | СерийныйНомер ----------------------------------------------- Номенклатура1 | СерийныйНомер1 Номенклатура1 | СерийныйНомер2 Номенклатура1 | СерийныйНомер3 Номенклатура2 | СерийныйНомер4 Номенклатура2 | СерийныйНомер5 Номенклатура3 | СерийныйНомер6 Номенклатура3 | СерийныйНомер7 Задача: Как построить запрос чтобы на выходе получить первую пару Номенклатура->СерийныйНомер для каждой отдельной номенклатуры? Имею в виду примерно такое: Номенклатура1 | СерийныйНомер1 Номенклатура2 | СерийныйНомер4 Номенклатура3 | СерийныйНомер6 В MS-SQL подобную ситуацию можно решить таким образом: SEL ECT t.nom, ( SELECT TOP 1 tt.sn FR OM #tt tt WH ERE tt.nom = t.nom ) FR OM #tt t GROUP BY t.nom нужно сделать в 1с. |
|||
1
Wobland
03.12.14
✎
12:58
|
а что такое первая пара?
|
|||
2
Огурцы
03.12.14
✎
13:01
|
(0)ничего не понял
|
|||
3
Reaper_1c
03.12.14
✎
13:01
|
Коррелированным запросом. Точно так же как в на T-SQL
|
|||
4
Wobland
03.12.14
✎
13:01
|
(2) сгруппировать он хочет по номенклатуре
|
|||
5
Ненавижу 1С
гуру
03.12.14
✎
13:01
|
выбрать Номенклатура, Максимум(СерийныйНомер)
из Т сгруппировать по Номенклатура правда тут первый сферически-вакуумный |
|||
6
Лодырь
03.12.14
✎
13:02
|
Максимум по серийному номеру.
|
|||
7
Anarki
03.12.14
✎
13:04
|
Понапридумывают заголовков к УГ темам..
|
|||
8
Dionis Sergeevich
03.12.14
✎
13:04
|
Это было бы слишком просто)) А вот именно первое значение серийного номера которое не является ни максимумом ни минимумом)
|
|||
9
Dionis Sergeevich
03.12.14
✎
13:04
|
я только что решил задачку) Предлагаю и вам) Правда интересная
|
|||
10
Лодырь
03.12.14
✎
13:05
|
(8) Это неверно. Набор данных априори неупорядочен.
|
|||
11
Лодырь
03.12.14
✎
13:05
|
В нем нет понятия ПЕРВЫЙ.
|
|||
12
Maxus43
03.12.14
✎
13:07
|
есть такая хрень - Нумерация строк в запросе, вот тебе и решение |
|||
13
Dionis Sergeevich
03.12.14
✎
13:08
|
(12) Да, так и сделал) Через декартово произведение
|
|||
14
Лодырь
03.12.14
✎
13:11
|
(13) Можно увидеть результат?
|
|||
15
Dionis Sergeevich
03.12.14
✎
13:14
|
||||
16
Лодырь
03.12.14
✎
13:18
|
(15) Ты используешь вполне конкретное сравнение серийных номеров по ссылке.
|
|||
17
Dionis Sergeevich
03.12.14
✎
13:20
|
Нет, я использую сравнение порядкового номера записи
|
|||
18
Ненавижу 1С
гуру
03.12.14
✎
13:22
|
(17) тебе так кажется
|
|||
19
Maxus43
03.12.14
✎
13:23
|
сделай лучше сначала сквозную нумерацию исходной таблицы |
|||
20
Dionis Sergeevich
03.12.14
✎
13:23
|
получаю таблицу
Ном1 Сер1 1 Ном1 Сер2 2 Ном2 Сер1 3 Ном2 Сер1 4 Ном3 Сер1 5 потом Ном1 1 Ном2 3 Ном3 5 и уже потом по порядковым номерам присоединяю Серийные номера |
|||
21
Serginio1
03.12.14
✎
13:24
|
||||
22
Dionis Sergeevich
03.12.14
✎
13:24
|
(19) так и сделал же.
(18) Где я сравниваю что-то с серийным номером? Только для нумерации строк сравниваю на >= и все |
|||
23
Dionis Sergeevich
03.12.14
✎
13:25
|
(21) Не покатит. Пробовал
|
|||
24
Serginio1
03.12.14
✎
13:25
|
||||
25
Dionis Sergeevich
03.12.14
✎
13:28
|
(24) Если вы уверены что это поможет - можете попробовать написать решение.
|
|||
26
Serginio1
03.12.14
✎
13:32
|
(25)
ВЫБРАТЬ втИндекс.Номенлатура КАК Номенлатура, Min(втИндекс.СерийныйНомер КАК втИндекс.СерийныйНомер) ИЗ втИндекс КАК втИндекс ГДЕ (втИндекс.СерийныйНомер) В (ВЫБРАТЬ ПЕРВЫЕ 1 док.СерийныйНомер ИЗ втИндексКАК Док ГДЕ Док.Номенклатура=втИндекс.Номенлатура УПОРЯДОЧИТЬ ПО Док.СерийныйНомер) Groub By втИндекс.Номенлатура |
|||
27
Лодырь
03.12.14
✎
13:34
|
http://screencast.com/t/0g3hKhXz
И видно что всегда выбирается не ПЕРВЫЙ элемент в таблице, а вполне себе конкретный определяемый однозначно. |
|||
28
Serginio1
03.12.14
✎
13:35
|
Но желательно, что бы индекс был по Номенклатура,СерийныйНомер
А для твоей Задачи подойдет просто ВЫБРАТЬ втИндекс.Номенлатура КАК Номенлатура, Min(втИндекс.СерийныйНомер) КАК СерийныйНомер ИЗ втИндекс КАК втИндекс Groub By втИндекс.Номенлатура |
|||
29
Dionis Sergeevich
03.12.14
✎
13:41
|
(28) Это по минимальному значению же. Мы не привязываемся к значению...
|
|||
30
Лодырь
03.12.14
✎
13:42
|
(29) Смотри (27) Там скриншот результатов твоего "решения". Явная нестыковка.
|
|||
31
Dionis Sergeevich
03.12.14
✎
13:46
|
(30) Да, видел уже. я даже удалил первый элемент, записал его последним - все равно первым попадает
|
|||
32
Serginio1
03.12.14
✎
14:26
|
(29) Убери в 28 УПОРЯДОЧИТЬ ПО
Док.СерийныйНомер и получишь запрос как в (0) |
|||
33
wertyu
03.12.14
✎
14:27
|
(27) всё правильно, выбираются по порядку внесения в базу
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |