|
Как правильно переделать запрос? | ☑ | ||
---|---|---|---|---|
0
Miss1C
03.12.12
✎
13:18
|
Выбираю записи с регистров накопления, если документ был проведен по "бу" и "ну", получаю 2 записи, как получить одну?
ВЫБРАТЬ ТоварыНаСкладахОбороты.Регистратор, ТоварыНаСкладахОбороты.КоличествоПриход КАК КоличествоПриход, ТоварыНаСкладахОбороты.КоличествоРасход, ПартииТоваровНаСкладахОбороты.СтоимостьПриход, ПартииТоваровНаСкладахОбороты.СтоимостьРасход, ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьПриход КАК СтоимостьБУПриход, ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьРасход КАК СтоимостьБУРасход, ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьПриход КАК СтоимостьНУПриход, ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьРасход КАК СтоимостьНУРасход, ТоварыНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КАК БухгалтерскийУчет, ТоварыНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете КАК НалоговыйУчет, ТоварыНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете КАК УправленческийУчет, ВЫБОР КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьПриход <> 0 ТОГДА "1" КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход <> 0 ТОГДА "2" КОНЕЦ КАК Поле1, ПартииТоваровНаСкладахОбороты.Регистратор КАК Регистратор1 ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад = &Склад) КАК ТоварыНаСкладахОбороты ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад = &Склад) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОбороты ПО ТоварыНаСкладахОбороты.Регистратор = ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад = &Склад) КАК ПартииТоваровНаСкладахНалоговыйУчетОбороты ПО ТоварыНаСкладахОбороты.Регистратор = ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад = &Склад) КАК ПартииТоваровНаСкладахОбороты ПО ТоварыНаСкладахОбороты.Регистратор = ПартииТоваровНаСкладахОбороты.Регистратор УПОРЯДОЧИТЬ ПО Поле1 |
|||
1
Wobland
03.12.12
✎
13:19
|
правильно соединить по всем измерениям? запрос даже не смотрел
|
|||
2
Maxus43
03.12.12
✎
13:20
|
ВЫБОР
КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьПриход <> 0 ТОГДА "1" КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход <> 0 ТОГДА "2" КОНЕЦ КАК Поле1, ПартииТоваровНаСкладахОбороты.Регистратор КАК Регистратор1 убрать это и сгруппировать. в соединения не вникал, чото там нечисто |
|||
3
Miss1C
03.12.12
✎
13:26
|
(2) Убрала, не помогло
|
|||
4
Wobland
03.12.12
✎
13:27
|
(3) что нечисто в соединениях, скажи нам, о инженер знаний
|
|||
5
Miss1C
03.12.12
✎
13:29
|
(4) Да сделала уже, надо было группировать)))
|
|||
6
Wobland
03.12.12
✎
13:31
|
(5) поздравляю! обращайся, если что
|
|||
7
sapphire
03.12.12
✎
13:37
|
(0) Агрегировать результат.
.. Ну и ТоварыНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете равносильно "SELECT * FROM *" (c) |
|||
8
mikecool
03.12.12
✎
13:42
|
почему тебе муж не помогает?
|
|||
9
Wobland
03.12.12
✎
13:43
|
(8) PR ревнует
|
|||
10
mikecool
03.12.12
✎
13:43
|
(9) а он разве не муж еще? должен был, как честный мужчина...
|
|||
11
Wobland
03.12.12
✎
13:47
|
(10) ух ты, сколько я пропустил
|
|||
12
Miss1C
03.12.12
✎
13:50
|
ВЫБОР
КОГДА ТоварыНаСкладахОбороты.Регистратор <> NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор КОГДА ПартииТоваровНаСкладахОбороты.Регистратор <> NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор КОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор <> NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор КОНЕЦ КАК Регистратор, Регистратор у меня идет по ВТ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты, но он пустой, что не так сделала? |
|||
13
Maxus43
03.12.12
✎
13:51
|
ТоварыНаСкладахОбороты.Регистратор ЕСТЬNULL
<> NULL - всегда истина, ибо NULL <> NULL |
|||
14
Stim
03.12.12
✎
13:51
|
(12)пустой <> null
|
|||
15
Miss1C
03.12.12
✎
13:54
|
Вот так?
ВЫБОР КОГДА ТоварыНаСкладахОбороты.Регистратор ЕСТЬ NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор КОГДА ПартииТоваровНаСкладахОбороты.Регистратор ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор КОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор КОНЕЦ КАК Регистратор, |
|||
16
Maxus43
03.12.12
✎
13:56
|
(15) так хотя бы условие сработает. общая логика запроса мне не ясна
|
|||
17
Miss1C
03.12.12
✎
13:57
|
(13) Если <> NULL - всегда истина, тогда в этом условии в качестве регистратора будит что?
ВЫБОР КОГДА ТоварыНаСкладахОбороты.Регистратор <> NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор ИНАЧЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор |
|||
18
Miss1C
03.12.12
✎
14:01
|
У меня получается <> NULL - всегда ложь;
|
|||
19
samozvanec
03.12.12
✎
14:04
|
(18) не слушай их, любое сравнение с нулом возвратит ложь
|
|||
20
Miss1C
03.12.12
✎
14:04
|
(13) Все равно регистратор = NULL
|
|||
21
Maxus43
03.12.12
✎
14:06
|
(19) ну или так, не помню) смысл в том что для проверки ЕСТЬNULL юзать надо
|
|||
22
Miss1C
03.12.12
✎
14:06
|
(19) Как тогда сравнить?
|
|||
23
Miss1C
03.12.12
✎
14:06
|
(21) Все равно не получается
|
|||
24
samozvanec
03.12.12
✎
14:07
|
(22) ЧотоТам ЕСТЬ NULL
НЕ ЧотоТам ЕСТЬ NULL ЕСТЬNULL(ЧотоТам, ЧоПодставитьЕслиНул) = СЧемСравнить такие варианты есть |
|||
25
Miss1C
03.12.12
✎
14:10
|
ВЫБОР
КОГДА (НЕ ТоварыНаСкладахОбороты.Регистратор ЕСТЬ NULL ) ТОГДА ТоварыНаСкладахОбороты.Регистратор КОГДА (НЕ ПартииТоваровНаСкладахОбороты.Регистратор ЕСТЬ NULL ) ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор КОГДА (НЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор ЕСТЬ NULL ) ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор КОНЕЦ Если так, тогда с группировками получается 2 записи |
|||
26
samozvanec
03.12.12
✎
14:16
|
(25) смотри, каким полем отличаются
|
|||
27
Miss1C
03.12.12
✎
14:18
|
(26) Регистратором, один с типом NULL один с типом ДокументСсылка
|
|||
28
samozvanec
03.12.12
✎
14:37
|
(27) регистратор нулл? где-то косяк
|
|||
29
samozvanec
03.12.12
✎
14:39
|
(27) у тебя всего 4 таблицы, какой-то не хватает при выборе регистратора
|
|||
30
samozvanec
03.12.12
✎
14:40
|
(29) ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор
вот этой |
|||
31
samozvanec
03.12.12
✎
14:40
|
(30) вот этой поля у тебя не хватает при выборе)
|
|||
32
Miss1C
03.12.12
✎
14:42
|
(31) Спасибо большое
|
|||
33
Miss1C
03.12.12
✎
14:43
|
(+32) Не внимательная
|
|||
34
sapphire
03.12.12
✎
14:44
|
(12) Да всё не так.
|
|||
35
samozvanec
03.12.12
✎
14:45
|
(34) самое главное - вовремя)
|
|||
36
sapphire
03.12.12
✎
14:45
|
(25) Огород из CASE-ов замедляет работу системы вцелом.
Используй ОБЪЕДИНИТЬ ВСЕ (UNION ALL) |
|||
37
sapphire
03.12.12
✎
14:53
|
Идея примерно такая:
ВЫБРАТЬ ТоварыНаСкладахОбороты.Регистратор, SUM(ТоварыНаСкладахОбороты.КоличествоПриход) КАК КоличествоПриход, SUM(ТоварыНаСкладахОбороты.КоличествоРасход), 0 СтоимостьПриход,//ПартииТоваровНаСкладахОбороты.СтоимостьПриход, 0 СтоимостьРасход,//ПартииТоваровНаСкладахОбороты.СтоимостьРасход, 0 СтоимостьБУПриход,//ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьПриход КАК СтоимостьБУПриход, 0 СтоимостьБУРасход, //ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьРасход КАК СтоимостьБУРасход, 0 СтоимостьНУПриход, //ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьПриход КАК СтоимостьНУПриход, 0 СтоимостьНУРасход, //ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьРасход КАК СтоимостьНУРасход, //ТоварыНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КАК БухгалтерскийУчет, //ТоварыНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете КАК НалоговыйУчет, // ТоварыНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете КАК УправленческийУчет, //ВЫБОР // КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьПриход <> 0 // ТОГДА "1" // КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход <> 0 // ТОГДА "2" 0 КАК Поле1//КОНЕЦ КАК Поле1 ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад = &Склад) КАК ТоварыНаСкладахОбороты GROUP BY ТоварыНаСкладахОбороты.Регистратор UNION ALL SELECT ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор, 0 КоличествоПриход, 0 КоличествоРасход, SUM(ПартииТоваровНаСкладахОбороты.СтоимостьПриход) СтоимостьПриход, SUM(ПартииТоваровНаСкладахОбороты.СтоимостьРасход) СтоимостьРасход, 0 СтоимостьБУПриход,//ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьПриход КАК СтоимостьБУПриход, 0 СтоимостьБУРасход, //ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьРасход КАК СтоимостьБУРасход, 0 СтоимостьНУПриход, //ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьПриход КАК СтоимостьНУПриход, 0 СтоимостьНУРасход, //ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьРасход КАК СтоимостьНУРасход, //ТоварыНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КАК БухгалтерскийУчет, //ТоварыНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете КАК НалоговыйУчет, // ТоварыНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете КАК УправленческийУчет, //ВЫБОР // КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьПриход <> 0 // ТОГДА "1" // КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход <> 0 // ТОГДА "2" 0 КАК Поле1//КОНЕЦ КАК Поле1 FROM РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад = &Склад) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОбороты GROUP BY ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор, |
|||
38
sapphire
03.12.12
✎
14:54
|
(33) Что дальше с дополненной "простыней" а-ля (37) делать знаешь или сама догадаешься?
|
|||
39
Miss1C
03.12.12
✎
16:08
|
(36) Сильно замедляет?
|
|||
40
sapphire
03.12.12
✎
16:16
|
(39) Для каждой записи вычисляется
|
|||
41
sapphire
03.12.12
✎
16:17
|
(39) "Но не в форме тут дело, а в принципе" (с)
Речь идет о подходе вообще. |
|||
42
Bober
03.12.12
✎
18:48
|
(0)
1. вот это все портит ТоварыНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КАК БухгалтерскийУчет, ТоварыНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете КАК НалоговыйУчет, ТоварыНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете КАК УправленческийУчет |
|||
43
Bober
03.12.12
✎
18:49
|
(0) ПОЛНОЕ СОЕДИНЕНИЕ заменить на объединить все
|
|||
44
Kashemir
03.12.12
✎
19:04
|
+(43) Поддерживаю. Соединению тут делать нечего.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |