|
Найти минимум в связке один-ко-многим 🠗 (Волшебник 10.04.2023 23:04) | ☑ | ||
---|---|---|---|---|
0
Alex174
10.04.23
✎
14:46
|
Доброго дня. Что-то не могу допетрить. Есть справочник Контракты. К одному контракту относится много Заказов покупателей. Как мне найти заказ покупателя с минимальной датой для каждого контракта?
Т.е. Контр1 ЗаказПокупателя1 01.01.2022 Контр1 ЗаказПокупателя2 02.02.2022 Контр1 ЗаказПокупателя3 03.03.2022 Контр2 ЗаказПокупателя4 05.01.2022 Контр2 ЗаказПокупателя5 10.01.2022 Надо найти Контр1 ЗаказПокупателя1 01.01.2022 Контр2 ЗаказПокупателя4 05.01.2022 |
|||
1
PR
10.04.23
✎
14:48
|
(0) Сначала делаешь временную таблицу с минимальными датами по покупателям, потом соединяешь основную с ней
|
|||
2
PR
10.04.23
✎
14:48
|
(1) Не забудь еще добавить этап с получением минимального заказа, а то в одну дату может быть несколько заказов
|
|||
3
Alex174
10.04.23
✎
14:51
|
(1) Какого формата? ЗаказПокупателя И дата связаны 1-к-1
|
|||
4
mikecool
10.04.23
✎
15:01
|
(3) да, тяжело...
сгруппируй по контр + минимум(Дата) потом по дате и контр привяжи заказ |
|||
5
PR
10.04.23
✎
15:02
|
(3) ЗаказПокупателя И дата связаны многие-к-1
|
|||
6
PR
10.04.23
✎
15:02
|
(4) Еще (2)
|
|||
7
mikecool
10.04.23
✎
15:05
|
(6) это потянет на вторую ветку , не иначе )
|
|||
8
PR
10.04.23
✎
15:14
|
(7) Да не говори, задрали
Уже была ветка месяц назад или два |
|||
9
azernot
10.04.23
✎
15:26
|
ВЫБРАТЬ
Заказы.Ссылка КАК Заказ, Заказы.Дата, Заказы.Контрагент ПОМЕСТИТЬ ВсеЗаказы ИЗ Документ.Заказ КАК Заказы Где бла-бла-бла ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МИНИМУМ(Дата) КАК МинимальнаяДата, Контрагент КАК Контрагент ПОМЕСТИТЬ МинимальныеДаты ИЗ ВсеЗаказы КАК ВсеЗаказы СГРУППИРОВАТЬ ПО Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МИНИМУМ(ВсеЗаказы.Заказ) КАК Заказ, ВсеЗаказы.Контрагент КАК Контрагент ИЗ ВсеЗаказы КАК ВсеЗаказы ВНУТРЕННЕЕ СОЕДИНЕНИЕ МинимальныеДаты КАК МинимальныеДаты ПО ВсеЗаказы.Контрагент = МинимальныеДаты.Контрагент И ВсеЗаказы.Дата = МинимальныеДаты.МинимальнаяДата СГРУППИРОВАТЬ ПО ВсеЗаказы.Контрагент |
|||
14
PR
10.04.23
✎
17:28
|
(9) Я же говорю, нужно соединение с регистраторами, а не датами
|
|||
17
azernot
10.04.23
✎
17:42
|
(13) А по мне, так последовательная обработка - нагляднее, я могу посмотреть/отладить промежуточные данные, плюс я могу заюзать индексы. Лично мне кажется, что для начинающих такая форма - полезнее.
>Это вы что-то путаете Это не я что-то путаю, а вы ошиблись в своём запросе. Он выдаст данные противоречащие постановке. Даже если предположить, что двух заказов от одной даты по одному контракту не бывает. Ошибка очевидна, исправляется легко, скорее всего виновата ваша спешка, но как говорится, из песни слов не выкинешь. |
|||
18
PR
10.04.23
✎
17:44
|
(16) Нет
Возможны дубли Читай (2) |
|||
20
PR
10.04.23
✎
17:49
|
(19) Потому что это ошибочное утверждение, я же написал в (5)
|
|||
21
mikecool
10.04.23
✎
17:49
|
(13) вложенные запросы для оптимизатора "трудны", что может приводить к деградации скорости получения результата
|
|||
23
azernot
10.04.23
✎
17:51
|
(22) И Т1.Заказ=Т2.Заказ
это условие делает условие бессмысленным. |
|||
26
mikecool
10.04.23
✎
17:57
|
(24) " У заказчика не будет двух заказов по одному контракту в одну дату." - а вот это может быть ложь.
у него может быть несколько заказов в 1 секунду |
|||
28
Alex174
11.04.23
✎
07:43
|
(9) Такая штука не срабатывает, если в одну секунду есть два документа. А они есть к сожалению...
|
|||
29
Alex174
11.04.23
✎
08:48
|
(9) Хотя нет, сработало. Тему можно закрывать. Всем спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |