|   |   | 
| 
 | Помогите разобрать запрос | ☑ | ||
|---|---|---|---|---|
| 0
    
        Обработка 30.05.23✎ 07:55 | 
        ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ СотрСДатами.ПодразделениеОрганизации, СотрСДатами.ДатаНачала, СотрСДатами.ДатаОкончания, Лимиты.Период КАК Период, МИНИМУМ(Лимиты.Период1) КАК Период1, Лимиты.Прекратить ПОМЕСТИТЬ ЛимитыБезСумм ИЗ (ВЫБРАТЬ Лимиты.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Лимиты.Лимит КАК Лимит, Лимиты.Период КАК Период, ВЫБОР КОГДА ЕСТЬNULL(Лимит1.Период, &ДатаКон) = &ДатаКон ТОГДА &ДатаКон ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Лимит1.Период, ДЕНЬ, -1), ДЕНЬ) КОНЕЦ КАК Период1, Лимиты.Прекратить КАК Прекратить ИЗ (ВЫБРАТЬ РСДопНачСП.ПодразделениеОрганизации КАК ПодразделениеОрганизации, РСДопНачСП.Лимит КАК Лимит, &ДатаНач КАК Период, РСДопНачСП.Прекратить КАК Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления.СрезПоследних(&ДатаНач, ) КАК РСДопНачСП ГДЕ РСДопНачСП.Сотрудник = &ПустойСотр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РСДопНач.ПодразделениеОрганизации, РСДопНач.Лимит, РСДопНач.Период, РСДопНач.Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления КАК РСДопНач ГДЕ РСДопНач.Период МЕЖДУ &ДатаНач И &ДатаКон И РСДопНач.Сотрудник = &ПустойСотр) КАК Лимиты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Лимиты.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Лимиты.Лимит КАК Лимит, Лимиты.Период КАК Период, Лимиты.Прекратить КАК Прекратить ИЗ (ВЫБРАТЬ РСДопНачСП.ПодразделениеОрганизации КАК ПодразделениеОрганизации, РСДопНачСП.Лимит КАК Лимит, &ДатаНач КАК Период, РСДопНачСП.Прекратить КАК Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления.СрезПоследних(&ДатаНач, ) КАК РСДопНачСП ГДЕ РСДопНачСП.Сотрудник = &ПустойСотр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РСДопНач.ПодразделениеОрганизации, РСДопНач.Лимит, РСДопНач.Период, РСДопНач.Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления КАК РСДопНач ГДЕ РСДопНач.Период МЕЖДУ &ДатаНач И &ДатаКон И РСДопНач.Сотрудник = &ПустойСотр) КАК Лимиты) КАК Лимит1 ПО Лимиты.ПодразделениеОрганизации = Лимит1.ПодразделениеОрганизации И Лимиты.Период < Лимит1.Период) КАК Лимиты ВНУТРЕННЕЕ СОЕДИНЕНИЕ СотрСДатами КАК СотрСДатами ПО Лимиты.ПодразделениеОрганизации = СотрСДатами.ПодразделениеОрганизации СГРУППИРОВАТЬ ПО СотрСДатами.ДатаОкончания, СотрСДатами.ПодразделениеОрганизации, Лимиты.Период, СотрСДатами.ДатаНачала, Лимиты.Прекратить ; | |||
| 1
    
        Обработка 30.05.23✎ 07:56 | 
        Помогите разобрать этот запрос.
 Хочу переименовать одинаковые имена на разных уровнях. После переделать запрос. Вероятно будет у меня ВТ вместо вложенных. | |||
| 2
    
        Обработка 30.05.23✎ 07:57 | 
        Специально упросил запрос сохраняя общую структуру удаляя лишние реквизиты.     | |||
| 3
    
        Bigbro 30.05.23✎ 08:02 | 
        а что не так
 маленький запросик, работает? не трожь) | |||
| 4
    
        Обработка 30.05.23✎ 08:03 | 
        Хочу разобрать "КАК Лимиты"
 и переделать их в "КАК Лимиты0", "КАК Лимиты1" и "КАК Лимиты2" итп. | |||
| 5
    
        Обработка 30.05.23✎ 08:05 | 
        (3) Это кусочек из запроса состоящий из 900 строк!
 Я полностью переделываю и дорабатываю потому что в нем есть ошибка и недочеты. | |||
| 6
    
        Мимохожий Однако 30.05.23✎ 08:26 | 
        Добавь в объединение запрос
 ............. ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РСДопНач.ПодразделениеОрганизации, РСДопНач.Лимит, РСДопНач.Период, РСДопНач.Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления КАК РСДопНач0 ГДЕ РСДопНач.Период МЕЖДУ &ДатаНач И &ДатаКон И РСДопНач.Сотрудник = &ПустойСотр) КАК Лимиты0 .......... и т.д. | |||
| 7
    
        ADirks 30.05.23✎ 09:05 | 
        (0) Если текст запроса оформить слегка по-другому, то он легче воспринимается
 я бы сделал так ВЫБРАТЬ СотрСДатами.ПодразделениеОрганизации, СотрСДатами.ДатаНачала, СотрСДатами.ДатаОкончания, Лимиты.Период КАК Период, МИНИМУМ(Лимиты.Период1) КАК Период1, Лимиты.Прекратить ПОМЕСТИТЬ ЛимитыБезСумм ИЗ ( ВЫБРАТЬ Лимиты.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Лимиты.Лимит КАК Лимит, Лимиты.Период КАК Период, ВЫБОР КОГДА ЕСТЬNULL(Лимит1.Период, &ДатаКон) = &ДатаКон ТОГДА &ДатаКон ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Лимит1.Период, ДЕНЬ, -1), ДЕНЬ) КОНЕЦ КАК Период1, Лимиты.Прекратить КАК Прекратить ИЗ ( ВЫБРАТЬ РСДопНачСП.ПодразделениеОрганизации КАК ПодразделениеОрганизации, РСДопНачСП.Лимит КАК Лимит, &ДатаНач КАК Период, РСДопНачСП.Прекратить КАК Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления.СрезПоследних(&ДатаНач, ) КАК РСДопНачСП ГДЕ РСДопНачСП.Сотрудник = &ПустойСотр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РСДопНач.ПодразделениеОрганизации, РСДопНач.Лимит, РСДопНач.Период, РСДопНач.Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления КАК РСДопНач ГДЕ РСДопНач.Период МЕЖДУ &ДатаНач И &ДатаКон И РСДопНач.Сотрудник = &ПустойСотр ) КАК Лимиты ЛЕВОЕ СОЕДИНЕНИЕ ( ВЫБРАТЬ Лимиты.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Лимиты.Лимит КАК Лимит, Лимиты.Период КАК Период, Лимиты.Прекратить КАК Прекратить ИЗ ( ВЫБРАТЬ РСДопНачСП.ПодразделениеОрганизации КАК ПодразделениеОрганизации, РСДопНачСП.Лимит КАК Лимит, &ДатаНач КАК Период, РСДопНачСП.Прекратить КАК Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления.СрезПоследних(&ДатаНач, ) КАК РСДопНачСП ГДЕ РСДопНачСП.Сотрудник = &ПустойСотр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РСДопНач.ПодразделениеОрганизации, РСДопНач.Лимит, РСДопНач.Период, РСДопНач.Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления КАК РСДопНач ГДЕ РСДопНач.Период МЕЖДУ &ДатаНач И &ДатаКон И РСДопНач.Сотрудник = &ПустойСотр ) КАК Лимиты ) КАК Лимит1 ПО Лимиты.ПодразделениеОрганизации = Лимит1.ПодразделениеОрганизации И Лимиты.Период < Лимит1.Период ) КАК Лимиты ВНУТРЕННЕЕ СОЕДИНЕНИЕ СотрСДатами КАК СотрСДатами ПО Лимиты.ПодразделениеОрганизации = СотрСДатами.ПодразделениеОрганизации СГРУППИРОВАТЬ ПО СотрСДатами.ДатаОкончания, СотрСДатами.ПодразделениеОрганизации, Лимиты.Период, СотрСДатами.ДатаНачала, Лимиты.Прекратить ; | |||
| 8
    
        Галахад гуру 30.05.23✎ 09:11 | 
        (0) Ну да, такой себе запрос... Попей кофе съешь печеньку. Сядь да перепеши.     | |||
| 9
    
        SleepyHead гуру 30.05.23✎ 09:23 | 
        (5) Иногда проще переписать заново. Лишние детали выкинуть. За счет временных таблиц может получиться сокращение строк.     | |||
| 10
    
        Bigbro 30.05.23✎ 09:35 | 
        ну если есть ошибка, надо разбираться конечно.
 иногда бывает выбрасываешь все что написано садишься делать заново. пишешь вроде все просто и красиво, потом один нюанс, второй, потом при тестировании оказывается что в данных не все так гладко как думалось добавляем еще костыль, еще один. смотрим на результат - а получилось в целом все то же что было изначально. из плюсов - теперь ты понимаешь почему написано именно так ))) | |||
| 11
    
        Обработка 30.05.23✎ 09:40 | 
        Вроде как разобрался со структурой.     | |||
| 12
    
        Обработка 30.05.23✎ 09:40 | 
        ВЫБРАТЬ
 СотрСДатами.ПодразделениеОрганизации, СотрСДатами.ДатаНачала, СотрСДатами.ДатаОкончания, Лимиты3.Период КАК Период, МИНИМУМ(Лимиты3.Период1) КАК Период1, Лимиты3.Прекратить ПОМЕСТИТЬ ЛимитыБезСумм ИЗ (ВЫБРАТЬ Лимиты2.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Лимиты2.СуммаЛимита КАК СуммаЛимита, Лимиты2.Период КАК Период, ВЫБОР КОГДА ЕСТЬNULL(Лимит1.Период, &ДатаКон) = &ДатаКон ТОГДА &ДатаКон ИНАЧЕ КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(Лимит1.Период, ДЕНЬ, -1), ДЕНЬ) КОНЕЦ КАК Период1, Лимиты2.Прекратить КАК Прекратить ИЗ (ВЫБРАТЬ РСДопНачСП.ПодразделениеОрганизации КАК ПодразделениеОрганизации, РСДопНачСП.Лимит КАК СуммаЛимита, &ДатаНач КАК Период, РСДопНачСП.Прекратить КАК Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления.СрезПоследних(&ДатаНач, ) КАК РСДопНачСП ГДЕ РСДопНачСП.Сотрудник = &ПустойСотр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РСДопНач.ПодразделениеОрганизации, РСДопНач.Лимит, РСДопНач.Период, РСДопНач.Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления КАК РСДопНач ГДЕ РСДопНач.Период МЕЖДУ &ДатаНач И &ДатаКон И РСДопНач.Сотрудник = &ПустойСотр) КАК Лимиты2 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Лимиты0.ПодразделениеОрганизации КАК ПодразделениеОрганизации, Лимиты0.СуммаЛимита КАК СуммаЛимита, Лимиты0.Период КАК Период, Лимиты0.Прекратить КАК Прекратить ИЗ (ВЫБРАТЬ РСДопНачСП.ПодразделениеОрганизации КАК ПодразделениеОрганизации, РСДопНачСП.Лимит КАК СуммаЛимита, &ДатаНач КАК Период, РСДопНачСП.Прекратить КАК Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления.СрезПоследних(&ДатаНач, ) КАК РСДопНачСП ГДЕ РСДопНачСП.Сотрудник = &ПустойСотр ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РСДопНач.ПодразделениеОрганизации, РСДопНач.Лимит, РСДопНач.Период, РСДопНач.Прекратить ИЗ РегистрСведений.MCC_ДополнительныеНачисления КАК РСДопНач ГДЕ РСДопНач.Период МЕЖДУ &ДатаНач И &ДатаКон И РСДопНач.Сотрудник = &ПустойСотр) КАК Лимиты0) КАК Лимит1 ПО Лимиты2.ПодразделениеОрганизации = Лимит1.ПодразделениеОрганизации И Лимиты2.Период < Лимит1.Период) КАК Лимиты3 ВНУТРЕННЕЕ СОЕДИНЕНИЕ СотрСДатами КАК СотрСДатами ПО Лимиты3.ПодразделениеОрганизации = СотрСДатами.ПодразделениеОрганизации СГРУППИРОВАТЬ ПО СотрСДатами.ДатаОкончания, СотрСДатами.ПодразделениеОрганизации, Лимиты3.Период, СотрСДатами.ДатаНачала, Лимиты3.Прекратить | |||
| 13
    
        Обработка 30.05.23✎ 09:41 | 
        Зачем моему предшественнику пришло в голову вложенные запросы обзывать одним и тем же именем "Лимиты"?
 Ведь сам же потом не распутает это? | |||
| 14
    
        Обработка 30.05.23✎ 09:43 | 
        Я не люблю вложенные тем боле если надо вложенные повторять.
 И если уровень вложенности три и более. Да и данных там не много. Лучше ВТ. Во вторых читабельно. А еще вот так обзывать их. Это сверх беспечности. | |||
| 15
    
        Fish гуру 30.05.23✎ 10:07 | 
        (14) Лимиты - Прекратить!  Это же прекрасно :)     | |||
| 16
    
        Обработка 30.05.23✎ 10:11 | 
        (15) Назвать реквизиты РС логично и нормально это другая беда...
 Об этом уже молчу. | |||
| 17
    
        Прапорщик 30.05.23✎ 10:17 | 
        А чем вложенный запрос Лимиты0 отличается от Лимиты2?
 Сравнение текстов этих двух вложенных запросов говорит, что "Файлы идентичны". | |||
| 18
    
        Обработка 30.05.23✎ 10:32 | 
        (17) Там в запросе из 900 строк очень много повторений.
 Вот я для начала хоть структуру разбираю потом уже оптимизирую. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |