![]() |
|
Почему запрос не работает? | ☑ | ||
---|---|---|---|---|
0
tciban
25.11.14
✎
10:29
|
Уважаемые коллеги! Туплю! Объясните почему запрос не работает?
Типовая УТ 10.3 Вот сам запрос: ВЫБРАТЬ ЗатратыСделки.СуммаОборот КАК СуммаЗатрат, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) КАК СебестоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты(, , , ЗаказПокупателя = &Сделка) КАК ПродажиОбороты, РегистрНакопления.ПродажиСебестоимость.Обороты(, , , ЗаказПокупателя = &Сделка) КАК ПродажиСебестоимостьОбороты, Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары, (ВЫБРАТЬ СУММА(ЗатратыОбороты.СуммаОборот) КАК СуммаОборот ИЗ РегистрНакопления.Затраты.Обороты(, , , Заказ = &Сделка) КАК ЗатратыОбороты) КАК ЗатратыСделки ГДЕ ЗаказПокупателяТовары.Ссылка = &Сделка СГРУППИРОВАТЬ ПО ЗатратыСделки.СуммаОборот Результат пустой. А если делаю так, то все получается: ВЫБРАТЬ ЕСТЬNULL(ЗатратыСделки.СуммаОборот, 0) КАК СуммаЗатрат, СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) КАК СебестоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты(, , , ЗаказПокупателя = &Сделка) КАК ПродажиОбороты, РегистрНакопления.ПродажиСебестоимость.Обороты(, , , ЗаказПокупателя = &Сделка) КАК ПродажиСебестоимостьОбороты, Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары, (ВЫБРАТЬ СУММА(ЗатратыОбороты.СуммаОборот) КАК СуммаОборот ИЗ РегистрНакопления.Затраты.Обороты(, , , Заказ = &Сделка) КАК ЗатратыОбороты) КАК ЗатратыСделки ГДЕ ЗаказПокупателяТовары.Ссылка = &Сделка СГРУППИРОВАТЬ ПО ЗатратыСделки.СуммаОборот |
|||
1
mikecool
25.11.14
✎
10:30
|
а надо то что получить?
|
|||
2
mikecool
25.11.14
✎
10:31
|
1) нет соединения таблиц, как минимум
|
|||
3
mikecool
25.11.14
✎
10:32
|
+2 от этого(возможно) идет иннер джойн, смотреть в профилере
|
|||
4
tciban
25.11.14
✎
10:35
|
Забыл добавить - не работает если нет ни одной записи в регистре затрат по данному заказу покупателя (который параметр Сделка).
|
|||
5
mikecool
25.11.14
✎
10:36
|
(4) добавь связи между таблицами
|
|||
6
tciban
25.11.14
✎
10:43
|
Тогда нужно ли сделать связи между двумя другими таблицами? Между ПродажиОбороты и ПродажиСебестоимостьОбороты?
|
|||
7
mikecool
25.11.14
✎
10:43
|
(6) как угодно можно делать, конструктор не даст добавить неправильную связь
|
|||
8
tciban
25.11.14
✎
10:48
|
Вот так работает, но еще вопрос - где ставить ЕСТЬNULL(- до СУММА или после?
ВЫБРАТЬ СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот, СУММА(ПродажиСебестоимостьОбороты.СтоимостьОборот) КАК СебестоимостьОборот, ЕСТЬNULL(СУММА(ЗатратыОбороты.СуммаОборот),0) КАК СуммаОборот ИЗ РегистрНакопления.Продажи.Обороты(, , , ЗаказПокупателя = &Сделка) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Затраты.Обороты(, , , Заказ = &Сделка) КАК ЗатратыОбороты ПО ПродажиОбороты.ЗаказПокупателя = ЗатратыОбороты.Заказ, РегистрНакопления.ПродажиСебестоимость.Обороты(, , , ЗаказПокупателя = &Сделка) КАК ПродажиСебестоимостьОбороты |
|||
9
tciban
25.11.14
✎
10:49
|
И все же не могу понять, зачем связи, ведь есть же отбор по виртуальной таблице регистра! Объясните дураку на пальцах?
|
|||
10
Banned
25.11.14
✎
10:50
|
(9) Объясняю на пальцах. Средний видишь? )))
связи нужны. Это аксиома. |
|||
11
tciban
25.11.14
✎
10:52
|
(10) "связи нужны. Это аксиома." Я в первом посте привел пример запроса, который работает без связей. Так что не аксиома. Потому и хочу понять зачем они?
|
|||
12
Ёпрст
гуру
25.11.14
✎
10:54
|
(11) в первом посте cross join + условие в where
|
|||
13
tciban
25.11.14
✎
10:54
|
Да, строка "ГДЕ
ЗаказПокупателяТовары.Ссылка = &Сделка" - это лишнее, забыл убрать. Первоначальный запрос был сложнее, я на форуме самую суть оставил, что бы не замусоривать вопрос :) |
|||
14
Ёпрст
гуру
25.11.14
✎
10:54
|
на досуге, почитайте, что это...
|
|||
15
tciban
25.11.14
✎
10:56
|
(14) А что почитать то на досуге? Или про что? Что есть "cross join" по русски?
|
|||
16
Ёпрст
гуру
25.11.14
✎
10:56
|
(15) да.
|
|||
17
tciban
25.11.14
✎
10:59
|
(16) Я хотел спросить "Что есть "cross join" по русски?", а не почитать ли про это :)
|
|||
18
tciban
25.11.14
✎
11:00
|
(16) а вопрос мой в (15) бвл - где почитать. ссылочку бы неплохо...
|
|||
19
vicof
25.11.14
✎
11:01
|
(18) в гугле SQL для чайников за 21 день
|
|||
20
tciban
25.11.14
✎
11:04
|
По поводу связей - приймем это за аксиому, да... А где все таки ставить ЕСТЬNULL(- до СУММА или после?
|
|||
21
vicof
25.11.14
✎
11:07
|
(20) для начала нужно понять, как работают соединения и агрегатные функции
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |