|
v8: Нюансы языка запросов | ☑ | ||
---|---|---|---|---|
0
mgk2
16.08.13
✎
13:27
|
Объясните пожалуйста почему два похожих запроса дают разные результаты?
1. ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация КАК Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор КАК Регистратор, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&КрайняяДатаАнализа, &Дата, Регистратор, , ДоговорКонтрагента.ВидДоговора = &ВидДоговора) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты УПОРЯДОЧИТЬ ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.Дата УБЫВ ИТОГИ МИНИМУМ(СуммаВзаиморасчетовОстаток), МИНИМУМ(СуммаВзаиморасчетовПриход) ПО Организация, Контрагент 2. ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация КАК Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор КАК Регистратор, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовОстаток, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(&КрайняяДатаАнализа, &Дата, Регистратор, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ГДЕ ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента.ВидДоговора = &ВидДоговора УПОРЯДОЧИТЬ ПО ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор.Дата УБЫВ ИТОГИ МИНИМУМ(СуммаВзаиморасчетовОстаток), МИНИМУМ(СуммаВзаиморасчетовПриход) ПО Организация, Контрагент |
|||
1
Maxus43
16.08.13
✎
13:31
|
ДоговорКонтрагента.ВидДоговора вытащи в выборку, и погляди где расходится
|
|||
2
hhhh
16.08.13
✎
13:34
|
(1) если он вытащит, то всё сойдется. имхо
|
|||
3
mgk2
16.08.13
✎
13:35
|
(1) Т.е. оба запроса должны работать одинаково? Косяк в базе?
|
|||
4
GANR
16.08.13
✎
13:36
|
А профайлер можно глянуть?
|
|||
5
mgk2
16.08.13
✎
13:42
|
(4) Как это сделать?
|
|||
6
Maxus43
16.08.13
✎
13:47
|
в базе всё нормально, так и должно быть
|
|||
7
catena
16.08.13
✎
13:50
|
(2)Аха, сойдется.
|
|||
8
giallo
16.08.13
✎
13:58
|
(0) во втором запросе данные из вт получаются в разрезе договоров, а потом фильтруются по виду договора. Разница может быть например в ситуации если на разных видах договоров одинаковые суммы с разным знаком, а остальная аналитика одинакова. Тогда в первом запросе это свернется и не попадет в выборку, а во втором попадет.
|
|||
9
mgk2
16.08.13
✎
14:04
|
> Тогда в первом запросе это свернется и не попадет в выборку, а во втором попадет.
А не наоборот? Первым запросом я получаю более длинный список контрагентов. |
|||
10
giallo
16.08.13
✎
14:26
|
(9) подкорректирую (8) - если например, на начало периода на двух разных договорах с одинаковым видом, удовлетворяющем отбору, одинаковые суммы с разным знаком, а остальная аналитика одинакова, то тогда в первом запросе это свернется и не попадет в выборку, а во втором будут записи по обоим договорам.
|
|||
11
GANR
16.08.13
✎
17:04
|
(0) Запустить MS SQL Profiler, запустить отладку в Profiler и выловить запрос, который тебе нужен. Это желательно делать когда в базе никто, кроме тебя не работает, так как иначе в отладчик профайлера будут вываливаться запросы, которые запускают другие пользователи.
|
|||
12
GANR
16.08.13
✎
17:04
|
(11) к (5)
|
|||
13
mgk2
16.08.13
✎
21:47
|
(12) у меня база файловая
|
|||
14
giallo
16.08.13
✎
22:29
|
(13) через тех журнал sdbl запросы можно помотреть
|
|||
15
Reaper_1c
16.08.13
✎
23:11
|
(0) Потому, что виртуальные таблицы - автогруппируемые. А еще за второй вариант сажают на кол.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |