powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Помогите с BETWEEN в запросе
17 сообщений из 17, страница 1 из 1
Помогите с BETWEEN в запросе
    #36652522
В 1С при написании запроса возникла необходимость использовать подзапрос для нахождения минимального значения для ограничения общей выборки.

Запрос, который отлично работает в MS SQL:
Код: plaintext
1.
2.
3.
4.
5.
6.
select *
from tbl
where tbl.price between 
          (select min(price)+ 2  from Prices) 
        and 
          (select Avg(price)- 1  from Prices) 

1С не воспринимается, говорит, что синтаксическая ошибка.

есть ли обходной путь для использования конструкции типа

Код: plaintext
 ...ГДЕ  Поле = (Выбрать Минимум(...) ИЗ ...) ...
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652536
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не ГДЕ, а ИМЕЮЩИЕ... книги по языку запросов будет вася читать?
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652558
Господин ПЖне ГДЕ, а ИМЕЮЩИЕ... книги по языку запросов будет вася читать?

а мне, васе, группировать данные не надо, хотя за идею спасибо.

в мсскл для такого запроса having использовать не надо. Может в 1с есть более красивый способ обращаться к данным, извлеченным из подзапросов?
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652562
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"ВЫБРАТЬ
| АвансовыйОтчет.Ссылка
|ИЗ
| Документ.АвансовыйОтчет КАК АвансовыйОтчет
|
|СГРУППИРОВАТЬ ПО
| АвансовыйОтчет.Ссылка
|
|ИМЕЮЩИЕ
| АвансовыйОтчет.СуммаДокумента МЕЖДУ МИНИМУМ(АвансовыйОтчет.СуммаДокумента) + 2 И СРЕДНЕЕ(АвансовыйОтчет.СуммаДокумента) - 1"
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652567
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>а мне, васе, группировать данные не надо

а кому это интересно... min и прочее - агрегатные функции
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652573
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Может в 1с есть более красивый способ обращаться к данным, извлеченным из подзапросов?

а где тут был подзапрос?
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652585
Господин ПЖ"ВЫБРАТЬ
| АвансовыйОтчет.Ссылка
|ИЗ
| Документ.АвансовыйОтчет КАК АвансовыйОтчет
|
|СГРУППИРОВАТЬ ПО
| АвансовыйОтчет.Ссылка
|
|ИМЕЮЩИЕ
| АвансовыйОтчет.СуммаДокумента МЕЖДУ МИНИМУМ(АвансовыйОтчет.СуммаДокумента) + 2 И СРЕДНЕЕ(АвансовыйОтчет.СуммаДокумента) - 1"


Не совсем к условию задачи подходит. Минимальное значение берется совершенно из другой таблицы. Для этого и строится подзапрос
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652589
Господин ПЖ>Может в 1с есть более красивый способ обращаться к данным, извлеченным из подзапросов?

а где тут был подзапрос?

Вот где:

Код: plaintext
1.
2.
3.
4.
where tbl.price between 
          (select min(price)+ 2  from Prices) 
        and 
          (select Avg(price)- 1  from Prices) 
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652647
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм. не прет МЕЖДУ(ВЫБРАТЬ ) И (ВЫБРАТЬ)
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652886
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то извращенно:

ВЫБРАТЬ
1 КАК Поле1
ПОМЕСТИТЬ еее

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
2

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
3

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
4
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
СРЕДНЕЕ(еее.Поле1) КАК Поле1
ПОМЕСТИТЬ Сред
ИЗ
еее КАК еее
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
МИНИМУМ(еее.Поле1) КАК Поле1
ПОМЕСТИТЬ Мин
ИЗ
еее КАК еее
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
Мин.Поле1
ИЗ
(ВЫБРАТЬ
еее.Поле1 КАК Поле1
ИЗ
еее КАК еее
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Мин КАК Мин
ПО еее.Поле1 >= Мин.Поле1) КАК Мин
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
еее.Поле1 КАК Поле1
ИЗ
еее КАК еее
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Сред КАК Сред
ПО еее.Поле1 <= Сред.Поле1) КАК Сред
ПО Мин.Поле1 = Сред.Поле1
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652943
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну блин склщики жгут ...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
запрос=новый Запрос;
Запрос.текстзапроса="Выбрать Минимум(Цена) КАК мин,Среднее(Цена) КАК Сред   из Таблица1";
Выборка=запрос.выполнить.выбрать();
Выборка.следущий(); мин=Выборка.мин+ 2 ; Сред=Выборка.Сред- 1 ;
Запрос.установитьпараметер("Мин",Мин);
Запрос.установитьпараметер("Сред",Сред);
запрос.текстзапроса="выбрать * из таблица2 Где сумма между &мин и &Сред";
Выборка=запрос.выполнить.выбрать();

америка - для американцев ...
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36652979
Господин ПЖ,

:)

Вот только к моей задаче не подходит. пример что вначале - это упрощенная схема для наглядности.

Задача такая:
В регистре сведений РегистрСведений.РаботникиОрганизаций есть поле - График - значение этого поля показывает по какому графику сотрудник ходит на работу. На первое число месяца система ставит ему график автоматически. Теперь если в течении месяца сотруднику меняли график, то в регистре по сотруднику добавляется запись, типа период - 05.04.2010, Иванов, График 27.

Требуется сформировать выборку по сотруднику за определенный месяц, в которой на каждый день этого месяца будет ясно, по какому графику ходил сотрудник.
Например, по Иванову в регистре было
Код: plaintext
1.
2.
3.
 01 . 04 . 2010  Иванов График  1 
 08 . 04 . 2010  Иванов График  5 
 19 . 04 . 2010  Иванов График  3 

То выборка должна быть
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 01 . 04 . 2010  Иванов График  1 
 02 . 04 . 2010  Иванов График  1 
 03 . 04 . 2010  Иванов График  1 
 04 . 04 . 2010  Иванов График  1 
 08 . 04 . 2010  Иванов График  5 
 09 . 04 . 2010  Иванов График  5 
 10 . 04 . 2010  Иванов График  5 
 11 . 04 . 2010  Иванов График  5 
 12 . 04 . 2010  Иванов График  5 
...
 18 . 04 . 2010  Иванов График  5 
 19 . 04 . 2010  Иванов График  3 
 20 . 04 . 2010  Иванов График  3 
 21 . 04 . 2010  Иванов График  3 
...
 30 . 04 . 2010  Иванов График  3 


Задача несложная, и я по привычке написал что-то вроде этого:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
ВЫБРАТЬ
    РО.Период,
    РО.ГрафикРаботы,
    РО.Физлицо,
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь,
    РегистрСведений.РаботникиОрганизаций КАК РО
ГДЕ
    РО.Физлицо = &Физлицо
    И (РО.Период МЕЖДУ &нач И &окн
            ИЛИ РО.Период В
                (ВЫБРАТЬ
                    РаботникиОрганизацийСрезПоследних.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&нач, ) КАК РаботникиОрганизацийСрезПоследних
                ГДЕ
                    РаботникиОрганизацийСрезПоследних.Физлицо = &Физлицо))
    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &нач И &окн И
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= РО.Период и
    
    
РегламентированныйПроизводственныйКалендарь.ДатаКалендаря < 
        (ВЫБРАТЬ Минимум(pp.Период) как КонецПериода
    ИЗ РегистрСведений.РаботникиОрганизаций КАК pp
    ГДЕ pp.Период > РО.Период и РО.Физлицо = &Физлицо)


и вот там где жирным выделено - возникает ошибка.
Вот ищу простой способ решения проблемы.
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36653004
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
РегистрСведений.РаботникиОрганизаций КАК РО
кажется это -2 бала на сертификации по платформе ...
таблица имеет передодичность
ладно не важно
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36653261
Господин ПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага. Теперь более менее понятно. Такая ботва если не ошибаюсь называется срез последних на каждую дату
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36653446
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Запрос.Текст=
	"ВЫБРАТЬ
	|	основа.ДатаКалендаря КАК ДатаКалендаря,
	|	КурсыВалют.Валюта,
	|	КурсыВалют.Курс,
	|	КурсыВалют.Кратность
	|ИЗ
	|	(ВЫБРАТЬ
	|		Календарь.ДатаКалендаря КАК ДатаКалендаря,
	|		МАКСИМУМ(Курсы.Период) КАК Период,
	|		Курсы.Валюта КАК Валюта
	|	ИЗ
	|		(ВЫБРАТЬ
	|			РегламентированныйПроизводственныйКалендарь.ДатаКалендаря КАК ДатаКалендаря
	|		ИЗ
	|			РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
	|		ГДЕ
	|			РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &Д1 И &Д2) КАК Календарь
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|				КурсыВалют.Период КАК Период,
	|				КурсыВалют.Валюта КАК Валюта
	|			ИЗ
	|				РегистрСведений.КурсыВалют КАК КурсыВалют
	|			ГДЕ
	|				КурсыВалют.Период <= &Д2) КАК Курсы
	|			ПО Календарь.ДатаКалендаря >= Курсы.Период
	|	
	|	СГРУППИРОВАТЬ ПО
	|		Календарь.ДатаКалендаря,
	|		Курсы.Валюта) КАК основа
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
	|		ПО основа.Период = КурсыВалют.Период
	|			И основа.Валюта = КурсыВалют.Валюта
	|
	|СГРУППИРОВАТЬ ПО
	|	основа.ДатаКалендаря,
	|	КурсыВалют.Валюта,
	|	КурсыВалют.Курс,
	|	КурсыВалют.Кратность
	|
	|УПОРЯДОЧИТЬ ПО
	|	ДатаКалендаря";

продолжаем постить ...
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36653464
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати ... слово между - явно отдыхает ?
...
Рейтинг: 0 / 0
Помогите с BETWEEN в запросе
    #36654603
leaf,
пасибо большое, то что и требовалось.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Помогите с BETWEEN в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]