|
левое соединение | ☑ | ||
---|---|---|---|---|
0
ВежливаяТварь
18.04.12
✎
10:11
|
Добрый день Столкнулся с весьма затруднительной проблемой
Имеем запрос ВЫБРАТЬ ПродажиОбороты.Контрагент.Код ПОМЕСТИТЬ Контрагенты ИЗ РегистрНакопления.Продажи.Обороты(&ДатаКонМинусГод, &ДатаКон, , ) КАК ПродажиОбороты ГДЕ ПродажиОбороты.Номенклатура В ИЕРАРХИИ(&Бенкизер) И ПродажиОбороты.ДокументПродажи.Склад В(&Склады) СГРУППИРОВАТЬ ПО ПродажиОбороты.Контрагент.Код ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Контрагенты.КонтрагентКод КАК КонтрагентКод, ФактическийАдрес.Представление, АдресДоставки.Представление КАК Представление1 ИЗ Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ФактическийАдрес ПО Контрагенты.КонтрагентКод = ФактическийАдрес.Объект.Код ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК АдресДоставки ПО Контрагенты.КонтрагентКод = АдресДоставки.Объект.Код ГДЕ ФактическийАдрес.Вид = &ФактическийАдрес И АдресДоставки.Вид = &АдресДоставки УПОРЯДОЧИТЬ ПО КонтрагентКод ИТОГИ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КонтрагентКод) ПО ОБЩИЕ Проблема в том что Из 643 строк таблицы контрагенты выводит только 60. Что я делаю не правильно? |
|||
1
Ненавижу 1С
гуру
18.04.12
✎
10:12
|
ПО Контрагенты.КонтрагентКод = АдресДоставки.Объект.Код
И ФактическийАдрес.Вид = &ФактическийАдрес И АдресДоставки.Вид = &АдресДоставки а вообще соединение по коду это глупо |
|||
2
ВежливаяТварь
18.04.12
✎
10:14
|
а как не глупо?
|
|||
3
Godofsin
18.04.12
✎
10:15
|
по ссылке?
|
|||
4
Ненавижу 1С
гуру
18.04.12
✎
10:15
|
не вдумывался в остальное:
ВЫБРАТЬ ПродажиОбороты.Контрагент ПОМЕСТИТЬ Контрагенты .... ПО Контрагенты.Контрагент = АдресДоставки.Объект И ФактическийАдрес.Вид = &ФактическийАдрес И АдресДоставки.Вид = &АдресДоставки |
|||
5
butterbean
18.04.12
✎
10:16
|
убери условия ГДЕ в условия соединения
|
|||
6
ВежливаяТварь
18.04.12
✎
10:22
|
Убрал проблема втом что оно все равно нужно, можно сделать ещё одну виртуальную таблицу с эти условием а потом связать с таблицей контрагенты?
|
|||
7
zakidonoff
18.04.12
✎
10:23
|
(Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ФактическийАдрес ПО Контрагенты.КонтрагентКод = ФактическийАдрес.Объект.Код) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК АдресДоставки ПО Контрагенты.КонтрагентКод = АдресДоставки.Объект.Код Семантика: всё, что у тебя получилось из первого соединения отсекает по левому соединению всё, что получилось из второго. Попробуй во втором случае сделать просто соединение, а не внутреннее |
|||
8
ВежливаяТварь
18.04.12
✎
10:25
|
Понял попробую, спасибо огромное
|
|||
9
butterbean
18.04.12
✎
10:25
|
(6) куда убрал?? надо было
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ФактическийАдрес ПО Контрагенты.Контрагент = ФактическийАдрес.Объект И ФактическийАдрес.Вид = &ФактическийАдрес ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК АдресДоставки ПО Контрагенты.Контрагент = АдресДоставки.Объект И АдресДоставки.Вид = &АдресДоставки |
|||
10
Serginio1
18.04.12
✎
10:26
|
ФактическийКод и АдресДоставки сделай подзапросами с условиями. А в основной запросе исключи условия.
|
|||
11
Buster007
18.04.12
✎
10:28
|
условие ГДЕ у тебя убирает все записи по контрагентам, по которым, например, не задан ФактическийАдрес ИЛИ АдресДоставки.. в соединении если перенести, то все записи по контрагентам выведутся, а по которым не будет адреса, соответственно он просто не заполнится в результате
|
|||
12
Buster007
18.04.12
✎
10:29
|
+(11) для наглядности выполни запрос без условия ГДЕ, посмотри что выведется, а потом на то, что вывелось наложи условия в уме и поймешь, что такое ГДЕ)
|
|||
13
ВежливаяТварь
18.04.12
✎
10:34
|
Понял, попробую так, спасибо.
|
|||
14
ВежливаяТварь
18.04.12
✎
10:39
|
Сделал через временные таблицы сработало. Такой вопрос ещё если я в запросе делаю временные таблицы их потом нужно уничтожать? или они сами уничтожаются?
|
|||
15
Ненавижу 1С
гуру
18.04.12
✎
10:41
|
(14) в пакете не нужно
|
|||
16
Serginio1
18.04.12
✎
10:51
|
(14) Нужно стараться избегать временные таблицы и использовать подзапросы как в твоей ситуации для уменьшения конфликтов в TempDB и скорости, так как таблица физически создается. Но иногда для упрощения понимания запроса и для индексации применение временных таблиц оправдано.
|
|||
17
ВежливаяТварь
18.04.12
✎
10:56
|
(16) понял спасибо
(15) А где нужно? |
|||
18
Ненавижу 1С
гуру
18.04.12
✎
10:58
|
(17) возможно может быть нужно в Менеджере
|
|||
19
ВежливаяТварь
18.04.12
✎
11:25
|
(18) понял спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |