Вход | Регистрация
 

Повторяется запись в выборке по ДополнительнымРеквизитам

Повторяется запись в выборке по ДополнительнымРеквизитам
Я
   NIGHTHUNTER
 
01.04.21 - 08:38
Выбираю реквизиты из справочника контрагенты или партнеры.
Повторяется запись при выборке из дополнительных реквизитов.
   NIGHTHUNTER
 
1 - 01.04.21 - 08:40
(0+)  http://joxi.ru/12MyVQliky8lE2

Как правильнее делать подобные запросы, что бы не задваивались записи? Делать вложенными запросами? Пакетными вроде тоже не подойдет .

ВЫБРАТЬ
    Партнеры.Код КАК Код,
    Партнеры.Наименование КАК Наименование,
    Партнеры.Ссылка КАК Ссылка,
    ПартнерыДополнительныеРеквизиты.Свойство КАК Свойство,
    ПартнерыДополнительныеРеквизиты.Значение КАК Значение,
    ПартнерыДополнительныеРеквизиты.ТекстоваяСтрока КАК ТекстоваяСтрока,
    ПартнерыКонтактнаяИнформация.Тип КАК Тип,
    ПартнерыКонтактнаяИнформация.Вид КАК Вид,
    ПартнерыКонтактнаяИнформация.Представление КАК Представление,
    ПартнерыКонтактнаяИнформация.Значение КАК Значение1
ИЗ
    Справочник.Партнеры КАК Партнеры
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.ДополнительныеРеквизиты КАК ПартнерыДополнительныеРеквизиты
        ПО Партнеры.Ссылка = ПартнерыДополнительныеРеквизиты.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
        ПО Партнеры.Ссылка = ПартнерыКонтактнаяИнформация.Ссылка
   Обработка
 
2 - 01.04.21 - 08:44
А вы уверены что записи дубли?
ТО что на рисунке выделено по виду отличается значит они не дубли...
   dka80
 
3 - 01.04.21 - 09:05
+2 колонка Вид отличается. Это не дубли
   NIGHTHUNTER
 
4 - 01.04.21 - 09:22
(2) Да отличаются http://joxi.ru/82QJW7EH9J4RZA

Но экспедитор Петров 2 раза почему??? Так и должно быть?
   kobzon2
 
5 - 01.04.21 - 09:24
(4) Не заставляй людей ругаться матом с утра.
   dka80
 
6 - 01.04.21 - 09:26
(4) У тебя несколько видов адресов: адрес (хз что это), адрес доставки, адрес прописки и т.д. И Петров может иметь каждый из этих адресов и тогда их будет не два, а три или четыре.
Поэтому вот это
 ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
        ПО Партнеры.Ссылка = ПартнерыКонтактнаяИнформация.Ссылка
надо заменить на
 ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
        ПО Партнеры.Ссылка = ПартнерыКонтактнаяИнформация.Ссылка
и ПартнерыКонтактнаяИнформация.Вид=ТРЕБУЕМЫЙВИД
   Chameleon1980
 
7 - 01.04.21 - 09:31
посыл к автору и подобным.
вы хоть основы запросов и хранения данных уясните
и большинство ваших вопросов отпадет
каждый раз одно и тоже и связанное с основами
   NIGHTHUNTER
 
8 - 01.04.21 - 09:43
(6) Я выбирал все что есть. Пока без фильтров.

Ввел курьер Иванов, этому контрагенту у которого экспедитор Петров, так он не выбирается. Не понимаю вообще почему.
   Обработка
 
9 - 01.04.21 - 11:24
Реально глазами посмотри сколько там записей всего в таблицах
   novichok79
 
10 - 01.04.21 - 11:30
я думаю что Андрей нас троллит, не бывает же так, чтобы человек работал программистом 1С и не разбирался в запросах.
   Mikeware
 
11 - 01.04.21 - 11:35
(7) ну неспособен он... органически туп. принципиально.
это нельзя понять (реально нельзя понять), но можно просто запомнить его по никам.
   Обработка
 
12 - 01.04.21 - 11:47
Бывает случаи когда человек выучил слово целиком но по буквам читать не научился. Ну это как учиться. Фундамент важнее всего.
Хотя запросы не всем легко даются даже с пониманием азов. Я вот почему-то не очень люблю вложенные запросы  не потому что не удобно просто мой мозг не воспринимает их нормально. Приучил себя делать отдельные запросы и потом их соединять или объединять. )))
   Kassern
 
13 - 01.04.21 - 11:50
(12) по мне так лучше делать временные таблицы, а не вложенные запросы. Понимаю раньше, не было временных таблиц, приходилось вложенными пользоваться, а сейчас, можно создавать и уничтожать эти временные таблицы и писать более оптимальные запросы. Да и читаются такие запросы по мне так лучше.
   Kassern
 
14 - 01.04.21 - 11:52
(1) а вас не смущает что "Вид" разный? В одном случае это адрес, а в другом - адрес доставки.
   Обработка
 
15 - 01.04.21 - 11:52
(13)  Ну ВТ у меня самые любимые.
   Обработка
 
16 - 01.04.21 - 11:54
(0) Кстати у меня недавно была задача переноса контактных данных из базы в базу вот там я точно помню что телефоны бывают разные.
Рабочий домашний, мобильный итп. И так же с адресами. Так что нужно фильтры навешать если нужно конечно.
   NIGHTHUNTER
 
17 - 01.04.21 - 12:22
Я добавил курьера Иванов, записей стало 4. То есть это все нормально так да?
   NIGHTHUNTER
 
18 - 01.04.21 - 12:22
   NIGHTHUNTER
 
19 - 01.04.21 - 12:29
(6) Я же выбираю без фильтра!!!!
   Kassern
 
20 - 01.04.21 - 12:30
(18) возьми ручку, или карандаш и нарисуй свои таблицы и как ты их соединяешь и сразу будет понятно почему у тебя строки задваиваются, раз в голове представить соединение не можешь
   Mikeware
 
21 - 01.04.21 - 12:31
(17) да. там - все нормально. а ошибка - она в ДНК
   Kassern
 
22 - 01.04.21 - 12:31
(20) если все равно не понятно, берешь умную книжку и читаешь про левое соединение таблиц
   Mikeware
 
23 - 01.04.21 - 12:34
(20) (22) анекдот про негра и молоко...
   NIGHTHUNTER
 
24 - 01.04.21 - 12:34
(22) Может подскажете как будет правильно?
Строки различаются только экспедитором петровым и курьером Ивановым.
Я думаю тогда это выбирать вложенными запросами, что бы не было задвоений, а эти дополнительные реквизиты выходили новым полем.

Так ли?
   NIGHTHUNTER
 
25 - 01.04.21 - 12:36
Я во всем этом вижу решение, что в данном случае, из 4х строк, должно быть 2.
А курьер и экспедитор идут дополнительными полями.

Или как тут нужно правильно?
   Kassern
 
26 - 01.04.21 - 12:38
(25) почитай вот эту ветку, как раз на днях было. Если соображалка работает, то думаю сможешь на свой пример перенести.
Выбрать свойства номенклатуры в запросе
   Kassern
 
27 - 01.04.21 - 12:38
(23) что за анекдот?
   NIGHTHUNTER
 
28 - 01.04.21 - 12:41
(6) Интересно как это так будет связано? Справочник партнеры УТ, вкладка дополнительно,
туда добавлен экспедитор и курьер. А адрес на своей вкладке адреса и телефоны, адрес, адрес доставки и тд.
Так что не факт что так может быть связанно как вы сказали. Я вот и пытаюсь понять как тут правильно делать запрос, что бы не задваивать записи.
   Mikeware
 
29 - 01.04.21 - 12:45
(27) идет чувак по нью-йорку. Видит, стоит негр, и пьет молоко прямо из пакета...
ну, постоял, посмотрел, и говорит:  Не, не поможет!
©
   NIGHTHUNTER
 
30 - 01.04.21 - 12:45
(26) Ну то есть нужно фильтр устанавливать по свойству, что бы не было задвоений, это вы хотели сказать?

Получается вот так как в (0) нельзя выбирать, без установки фильтрации ?

Или на вид, контактной информации.
 
 Рекламное место пустует
   Kassern
 
31 - 01.04.21 - 12:48
(30) потому что без фильтра по каждой строчке из левой таблице, присоединятся все строчки из правой таблицы у которых совпадает связь, а у тебя связью является только ссылка. Если в правой таблице 2-3 строчки с данной ссылкой, то в результирующей таблице будет так же 2-3 строчки. Чтобы это избежать, нужно правую таблицу обрезать, в данном случае фильтром
   Kassern
 
32 - 01.04.21 - 12:50
(31) поэтому я и написал, чтобы ты почитал про соединения таблиц, нарисовал данные таблицы хоть на листочке и сам убедился почему у тебя идет задвоение
   NIGHTHUNTER
 
33 - 01.04.21 - 12:51
(31) Ну понятно. Я рассматривал ситуацию без фильтров. Что есть фильтры, можно делать, это понятно.
А важно ещё показать без фильтров. То есть, понятно мне, что без фильтра тут не обойтись. У меня нет конкретной цели, по этому я плутаю тут сам.
   Mikeware
 
34 - 01.04.21 - 12:53
(33) "нас невозможно сбить с пути - нам пох*ю, куда идти!"©
(32) я ж в (11) еще написал.
   Kassern
 
35 - 01.04.21 - 12:54
(34) надежда умирает последней
   novichok79
 
36 - 01.04.21 - 12:59
(13) это пока данных не очень много в таблицах, можно все в ВТ запихнуть. а если там 60 млн записей, то чисто INSERT INTO будет выполняться 40% времени запроса.
   Chameleon1980
 
37 - 01.04.21 - 13:00
автор так и не услышал про "почитать про азы"
и, похоже, так никогда и не услышит
   Chameleon1980
 
38 - 01.04.21 - 13:01
(36)ну а с вложенным, в этом случае, ещё хуже
   Kassern
 
39 - 01.04.21 - 13:02
(36) в этом случае делаешь срез базы, архивчик в чулан и дальше работаешь)
   novichok79
 
40 - 01.04.21 - 13:06
(38) ок, доказательства в студию.
на реальном проекте, ускорение составило с 35 до 13 секунд по таблице с 60 млн записей на MS SQL сервере.
   novichok79
 
41 - 01.04.21 - 13:07
(39) ну да, я вчера родился и не знал про архивы. в архиве данных еще больше было.
   kobzon2
 
42 - 01.04.21 - 13:10
(0) Если у тебя база не 60 млн записей и плохо понимаешь соединения, делай как советуют выше через ВТ.
Выбери в первом запросе адрес и ссылку из Справочник.Партнеры.ДополнительныеРеквизиты, с условием что доп реквизит равен такому то адресу, и помести в ВТ.
Вторым запросом выбирай различные контрагенты из справочника Партнеры и адрес из ВТ и соединяй их левым.
Хотя цель так и не понятно, что зачем надо.
   Kassern
 
43 - 01.04.21 - 13:10
(40) Вот что нашел на просторах инета
На дисках ИТС - есть специальный раздел, посвященный оптимизации запросов :)

В общем случае лучше использовать временные таблицы, тогда улучшается читаемость запросов, появляется возможность многократного использования полученного результата, в большинстве случаев работа со временными таблицами происходит быстрее.

Простые вложенные запросы при использование MS SQL версии могут выполняться быстрее - все-таки в MS SQL встроен оптимизатор выполнения запроса, который может соединить подзапросы быстрее чем если явно будет прописана выборка данных во временную таблицу.... но иногда оптимизатор работает не правильно ;) и тогда запросы без временных таблиц - ну просто тормозят ;)
   Chameleon1980
 
44 - 01.04.21 - 13:11
(40) а запрос покажи?
а с вложенным и как повезет
SQL при использовании вложенного запроса заранее не знает количество
получивших я записей и может неверно построить
план запроса. в отличие от вт
   novichok79
 
45 - 01.04.21 - 13:14
(44) это да, но в отличие от ВТ - помещать во временную таблицу ничего не надо. по поводу запроса - ЕМНИП там шел сбор таблицы со свойствами во временную. уволился с той конторы год назад, cf сейчас уже не найду. там была самописка по сбору данных, поэтому и записей под 60 млн в оперативной базе (срез данных за месяц вроде).
   novichok79
 
46 - 01.04.21 - 13:15
(43) это да, MS SQL очень хорошо оптимизирован.
   MouHacTaBHuk
 
47 - 01.04.21 - 13:35
пол сотни сообщений, а задача-то не прозвучала. Прозвучал тезис в теме, что строки повторяются, и сразу же был ответ - нет, не повторяются. Далее-то что обсуждать без задачи? Что выбрать-то надо: все свойства/всю контактную информацию, или, например, список всех контрагентов, у которых есть хоть какой-то адрес, или и так далее
   Kassern
 
48 - 01.04.21 - 13:36
(47) Был вопрос: Как правильнее делать подобные запросы, что бы не задваивались записи? На него почти сразу и ответили...
   MouHacTaBHuk
 
49 - 01.04.21 - 13:41
(48) да, но по последующим вопросам ТСа видно, что он не совсем понимает что делает, а следовательно он не сформулировал для себя какой результат ему нужен. Тут мы все бессильны пока что
   Mikeware
 
50 - 01.04.21 - 13:42
(49) вы излишне оптимистичны, сэр!
   NIGHTHUNTER
 
51 - 02.04.21 - 07:22
(49) Я хотел сделать выборку контрагентов и их таблиц, без учета фильтров и параметров, выдать все что есть.
Получается дополнительные реквизиты нужно исключить. либо обрабатывать их как то отдельно. Так как по ним идет задвоение записей.
Не буду я использовать фильтры и отборы, это противоречит самой выборки, выбраться должно все, без исключения. Такая была цель.

Вывести все что есть по контрагентам. И если у них есть дополнительные реквизиты то их тоже.
   FIXXXL
 
52 - 02.04.21 - 07:58
(51) можешь предварительно раскидать по отдельным временным таблицам контактную информацию в зависимости от типа, а уже потом каждую вязать по отдельности и выводить каждую КИ в отдельное поле
   NIGHTHUNTER
 
53 - 02.04.21 - 08:15
(52) временный таблицы, это имеется ввиду через

МВТ = Новый МенеджерВременныйТаблиц;

Не пакетные запросы?

И с использованием МВТ , это единственный вариант решения? наверное давно не сталкивался с ним, да и не часто использовал.
Нет можно сказать понимания. Но нужно! Я вот и ищу область для изучения, что бы взять ее в понимание.

Нужно заняться. буду благодарен любым напутствиям, и наставлениям на правильный путь развития.
   Mikeware
 
54 - 02.04.21 - 08:28
(53) наставления даже в этой ветке были даны трижды: в(7),(20),(22)
   novichok79
 
55 - 02.04.21 - 08:46
цитаты великих: "Я вот и ищу область для изучения, что бы взять ее в понимание."
   FIXXXL
 
56 - 02.04.21 - 08:49
(53) как умеешь, хоть через вложенные запросы
   Mikeware
 
57 - 02.04.21 - 08:52
(55) "область" - мелко. надо как минимум "пространство"
   Kassern
 
58 - 02.04.21 - 09:21
   NIGHTHUNTER
 
59 - 02.04.21 - 10:18
(58) А что это за обработка КонструкторЗапросовУпр_Конфетка ?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.