Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / v8 можно ли добавить условие в запрос в зависимости от параметра? / 25 сообщений из 27, страница 1 из 2
13.12.2011, 18:13
    #37573709
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
есть такой запрос
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
ВЫБРАТЬ
	РеализацияТоваровУслуг.Ссылка,
	СчетФактураВыданный.Ссылка КАК Ссылка1
ИЗ
	Документ.СчетФактураВыданный КАК СчетФактураВыданный,
	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
	РеализацияТоваровУслуг.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
	И СчетФактураВыданный.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)


можно ли сделать чтобы выбирались либо оба вида документов, либо только один из них?
допустим на форме будут 2 флажка. если выбраны оба то и выбираться должны оба вида документов, если выбран первый флажок то выбираться будут допустим только РеализацияТоваровУслуг
...
Рейтинг: 0 / 0
13.12.2011, 18:25
    #37573754
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
Запрос какой то дурацкий у Вас если честно (У Вас выведется полное пересечение этих двух видов документов за выбранный период
. Смотрите в сторону Объединить Все, и если нужны произвольные виды, то в сторону динимического запроса (чтобы текст запроса формировался в зависимости от параметров), ну а если не охота динамики, то в кихните в услови по соответствующему виду документа условия типа &Флаг1=истина для другого &Флаг2=истина.
...
Рейтинг: 0 / 0
13.12.2011, 20:09
    #37574007
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
{ГДЕ
РеализацияТоваровУслуг.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
СчетФактураВыданный.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)}

Почитайте про "{}"


"Запрос какой то дурацкий у Вас если честно" +1. Проще через объединение.
...
Рейтинг: 0 / 0
14.12.2011, 08:52
    #37574497
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
вот запросы 8.х и показали, что половина 1с-ников про SQL только краем уха слышали
...
Рейтинг: 0 / 0
14.12.2011, 09:02
    #37574504
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
...
Рейтинг: 0 / 0
14.12.2011, 09:51
    #37574570
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
мужики вы это не ругайтеся сильно. это я так для того чтобы разобраться как сделать в принципе.
про "{}" сча буду смотреть. спасиб
...
Рейтинг: 0 / 0
15.12.2011, 09:03
    #37576766
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
если не используется СКД или построитель, то можно сделать финт ушами а-ля:
Код: sql
1.
2.
3.
WHERE
 CASE WHEN &FlagOne THEN <Condition> END AND [OR] 
 CASE WHEN &FlagTwo THEN <Condition> END ....



Подсластить можно по вкусу, помучать субд на предмет производительности конструкции и т.п.
...
Рейтинг: 0 / 0
15.12.2011, 09:57
    #37576838
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
все разобрался. всем спасибо. вот что получилось
Код: vbnet
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.
ВЫБРАТЬ
		|	РеализацияТоваровУслуг.Ссылка КАК Док,
		|	РеализацияТоваровУслуг.Дата КАК ДатаДок,
		|	РеализацияТоваровУслуг.СуммаДокумента КАК Сумма
		|ИЗ
		|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
		|ГДЕ
		|	РеализацияТоваровУслуг.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
		|	И &Флаг1 = ИСТИНА
		|	И РеализацияТоваровУслуг.Номер ПОДОБНО &Номер
		|	{И РеализацияТоваровУслуг.Контрагент В(&СписокКонтр)}
		|СГРУППИРОВАТЬ ПО
		|	РеализацияТоваровУслуг.Ссылка,
		|	РеализацияТоваровУслуг.Дата,
		|	РеализацияТоваровУслуг.СуммаДокумента
		|
		|ОБЪЕДИНИТЬ ВСЕ
		|
		|ВЫБРАТЬ
		|	СчетФактураВыданный.Ссылка,
		|	СчетФактураВыданный.Дата,
		|	СчетФактураВыданный.СуммаДокумента
		|ИЗ
		|	Документ.СчетФактураВыданный КАК СчетФактураВыданный
		|ГДЕ
		|	СчетФактураВыданный.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
		|	И &Флаг2 = ИСТИНА
		|	И СчетФактураВыданный.Номер ПОДОБНО &Номер
		|	{И СчетФактураВыданный.Контрагент В(&СписокКонтр)}
		|СГРУППИРОВАТЬ ПО
		|	СчетФактураВыданный.Ссылка,
		|	СчетФактураВыданный.Дата,
		|	СчетФактураВыданный.СуммаДокумента
		|
		|УПОРЯДОЧИТЬ ПО
		|	ДатаДок
...
Рейтинг: 0 / 0
15.12.2011, 10:09
    #37576858
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
Уже хорошо.

1. Только в условии на первом месте
ГДЕ
| &Флаг1 (так быстрее)
| И тд

2. Упорядочить здесь бессмысленно. Сделай например в вложенном запросе и только после получение вложенного запроса напишешь:

|УПОРЯДОЧИТЬ ПО
| ВложенныйЗапрос.Дата

3. Группировать бессмысленно - ты же не к табличной части документа обращаешся.
...
Рейтинг: 0 / 0
15.12.2011, 10:17
    #37576874
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
Программист 1с,

ок учту. группировку мне сам конструктор сделал. не обратил внимания ))))
...
Рейтинг: 0 / 0
15.12.2011, 10:31
    #37576904
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
чего же хорошего?
вместо того что бы сформировать текст запроса по условию он сервер флагами напрягает
...
Рейтинг: 0 / 0
15.12.2011, 11:07
    #37577026
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
sWinTyz, по сравнению с первым вариантом это небо и земля.

Во вторых мы так и не узнали скд это или нет.
...
Рейтинг: 0 / 0
15.12.2011, 11:11
    #37577037
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
это не СКД
...
Рейтинг: 0 / 0
15.12.2011, 11:51
    #37577142
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
лень побеждает почесуху рук ...

может и небо и земля )
но не правильно
...
Рейтинг: 0 / 0
15.12.2011, 16:08
    #37577985
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
Программист 1с1. Только в условии на первом месте
ГДЕ
| &Флаг1 (так быстрее)
| И тд


На чём основано это утвеждение и для какой платформы верно?
...
Рейтинг: 0 / 0
15.12.2011, 16:11
    #37578003
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
всегда проверяется первое условие в списке первым
...
Рейтинг: 0 / 0
15.12.2011, 16:35
    #37578069
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
sWinTyz,

Я вот и спрашиваю, где это написано?
...
Рейтинг: 0 / 0
15.12.2011, 16:49
    #37578108
tvm
tvm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
кстати в поддержку "Программитс 1С"- действительно стало выполняться быстрее. по крайней мере кажется
...
Рейтинг: 0 / 0
15.12.2011, 17:25
    #37578247
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
нужно открыть книгу и написать вам название , автора и номер страницы?
а оно мне надо?
...
Рейтинг: 0 / 0
15.12.2011, 17:49
    #37578349
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
sWinTyzвсегда проверяется первое условие в списке первым
На примере MSSQL 2005 вот два примера, таблица источник может быть заменена на что угодно, столбец на который накладывается условие тоже не важен.
1) условие №1 всегда ложно
Код: sql
1.
2.
3.
declare @p1 bit
set @p1 = 2
select * from dbo.DBFields where @p1=1 and FldName like '%'


2) условие №2 всегда истинно
Код: sql
1.
2.
3.
declare @p1 bit
set @p1 = 1
select * from dbo.DBFields where @p1=1 and FldName like '%'


На выходе что в 1, что в 2 видим предикат: [AppBuilder].[dbo].[DBFields].[FldName] like N'%'

Насчет 1С 8.Х вы правы (Я имею ввиду т.н. сокращенной проверки условий, т.е. если условия записаны через "И" и первое условие = ЛОЖЬ то проверка других условий производится не будет), однако для СУБД это отнюдь не так.
...
Рейтинг: 0 / 0
15.12.2011, 17:52
    #37578367
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
а я тупой адинэснег
...
Рейтинг: 0 / 0
15.12.2011, 18:33
    #37578456
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
AHDPПрограммист 1с1. Только в условии на первом месте
ГДЕ
| &Флаг1 (так быстрее)
| И тд


На чём основано это утвеждение и для какой платформы верно?Для файловой версии прописано в документации - что условия проверяются по порядку.
Для sql нигде. Но в Теории план запроса не должен проверять все "И" если первое не выполняется - иначе "он" глупый. С другой стороны он может быть Умный и Сам поменяет местами условия в "И"
...
Рейтинг: 0 / 0
15.12.2011, 18:54
    #37578489
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
Программист 1с,

Что файловая не будет проверять заведомо лишние условия - спасибо. Не помнил такой особенности, но вполне логично.
Но если второе поле индексировано, а первое нет и вероятность отсеивания примерно одинакова и больше 30-50% - результат должен быть иным.
...
Рейтинг: 0 / 0
16.12.2011, 08:22
    #37579061
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
AHDP, ты не заметил. Первое поле "&Флаг1" это не поле. А просто значение Булево.

А логика Субд - это один Агромный черный ящик. Одни только вероятностные предположения.
...
Рейтинг: 0 / 0
16.12.2011, 09:01
    #37579091
XenoX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
v8 можно ли добавить условие в запрос в зависимости от параметра?
Программист 1сAHDP, ты не заметил. Первое поле "&Флаг1" это не поле. А просто значение Булево.

А логика Субд - это один Агромный черный ящик. Одни только вероятностные предположения.
Анализ планов как правило позволяет изгнать злых духов.
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / v8 можно ли добавить условие в запрос в зависимости от параметра? / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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