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



ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПО Истина - что это такое, подскажите

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПО Истина - что это такое, подскажите
Я
   IgorRst78
 
27.04.18 - 10:05
Возник вопрос - задачка была.
Объяснить что такое "ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПО Истина".
В чем физический смысл, для чего используется и каков результат действия.

Несмотря на то,что 1С очень долго занимаюсь - не смог. И вопрос заинтересовал.
Видел эту конструкцию не раз в ЗУПе.

Раскажите пожалуйста, кто в теме.
Что такое ВНЕТРЕННЕЕ СОЕДИНЕНИЕ можно не расказывать - пользуюсь часто.
Интересует именно  "ПО Истина".

Пример - есть 2 талбицы соединенные по id:
Табл 1           Табл 2
Наим      id     Наим
Товар 1   21     Заказчик 2   22
Товар 2   22     Заказчик 3   23
Товар 3   23     Заказчик 1   21
Товар 1   21

Что будет в результате "ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПО Истина" и Почему?
 
 
   Провинциальный 1сник
 
1 - 27.04.18 - 10:06
Полное соединение другими словами?
   Fragster
 
2 - 27.04.18 - 10:07
из "а", "б"  и 1, 2 получить
а, 1
а, 2
б, 1
б, 2

например для соединения справочника и периода при построении отчета за весь период, если нужна программная обработка, а 1сник не умеет в дополнение.
   Вафель
 
3 - 27.04.18 - 10:09
эт называется декартово произведение
   IgorRst78
 
4 - 27.04.18 - 10:22
(1)нет. См описание в (0)
   karagach
 
5 - 27.04.18 - 10:23
Это загадка природы имхо)
   IgorRst78
 
6 - 27.04.18 - 10:23
(2)не понял.
т.е. в этом случае каждая запись табл 1 умножается на запись табл 2 ?

(3)а попроще.
   FIXXXL
 
7 - 27.04.18 - 10:24
(2) декартово же

ВЫБРАТЬ
    "A" КАК Поле1
ПОМЕСТИТЬ АБ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "Б"
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    "1" КАК Поле1
ПОМЕСТИТЬ в12

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "2"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    АБ.Поле1,
    в12.Поле1 КАК Поле11
ИЗ
    АБ КАК АБ,
    в12 КАК в12

зачем вообще тогда ВНУТРЕННЕЕ по ИСТИНА?
   ptiz
 
8 - 27.04.18 - 10:24
(6) " каждая запись табл 1 умножается на запись табл 2" - да
   IgorRst78
 
9 - 27.04.18 - 10:25
Можно на примере, который я привел?

N/t/ что будет с теми записями у которых в обех таблицах совпадает Id - ведет себя как обычное "ВНУТРЕННЕЕ СОЕДИНЕНИЕ".
А что будет с задвоенными по id записями?
   IgorRst78
 
10 - 27.04.18 - 10:26
Ведет ли себя одинаково 
ВНУТРЕННЕЕ СОЕДИНЕНИЕ по Истина и ПОЛНОЕ СОЕДИНЕНИЕ ПО Истина
 
 Рекламное место пустует
   IgorRst78
 
11 - 27.04.18 - 10:27
А для каких случаев это нужно?
Почему иногда в ЗУПе встречается?
   FIXXXL
 
12 - 27.04.18 - 10:27
(9) забудь про ИД, ты же не указываешь это поле в условиях связи
   IgorRst78
 
13 - 27.04.18 - 10:29
(12)понял!!!
   FIXXXL
 
14 - 27.04.18 - 10:30
(11) у меня в ценообразовании встречается такое, когда  цена выставляется на список номенклатуры по списку городов
   FIXXXL
 
15 - 27.04.18 - 10:32
(14) +
Товар1 100,02 Город1
Товар1 100,02 Город2
Товар1 100,02 Город3
и т.п.
   IgorRst78
 
16 - 27.04.18 - 10:34
Спасибо всем!
Понял.

Не очень понял правда целесообразность этой конструкции
   trad
 
17 - 27.04.18 - 10:38
(10) по разному. например когда одна из таблиц пустая
   Mankubus
 
18 - 27.04.18 - 10:42
(9) что будет что будет... накидал бы запрос в консоли да посмотрел
   vicof
 
19 - 27.04.18 - 10:47
(18) +1
   Сияющий в темноте
 
20 - 27.04.18 - 12:35
В старом sql было select * from tab1,tab2
потом такой синкасис утратился и осталось только соединение с условием,а если условия нет,то пишем Истина
при исполнении sql сервер берет одну таблицу и для каждой ее строки подставляет все строки другой таблицы,которые годяться по условию,в данном случае,будут все строки
внутреннее соединение позволяет опустить строки с пропуском одной из таблиц,но здесь нулевые записи не появятся
   Fragster
 
21 - 27.04.18 - 12:40
(20) он не утратился, вполне работает
   Ненавижу 1С
 
22 - 27.04.18 - 12:42
(21) работает, но помечен как deprecated
   Вафель
 
23 - 27.04.18 - 12:49
(22) это где он помечен?
   Митяйский
 
24 - 27.04.18 - 12:50
(16) Разработчики типовых конф очень любят гонять объект запроса по общим модулям, и менять там текст запроса через СтрЗаменить().

Конструкция типа "соединение по истина" гораздо удобнее для дальнейшей ее подмены на другое условие объединения, особенно если в запросе могут изменяться имена таблиц.

Но это не точно.
   Fragster
 
25 - 27.04.18 - 12:54
(24) а еще лучше &_УсловиеСединенияТаблицыАиБ, тогда если где-то забыли заменить - то будет ошибка + видно, что же мы заменяем. Ну и несколько условий соединения так можно сделать.
   Сти
 
26 - 27.04.18 - 12:57
(23) в мечтах, наверное )
Устаревшим обозначили использование WHERE вместо JOIN, т.е.
вместо SELECT t1.a, t2.b from t1, t2 where t1.c = t2.c
крайне рекомендуют
SELECT t1.a, t2.b from t1 INNER JOIN t2 ON t1.c = t2.c

Вот и все.
   Ненавижу 1С
 
27 - 27.04.18 - 13:10
(23) ну не зря же специально добавили синтаксис CROSS JOIN

В общем случае для выполнения перекрестного объединения настоятельно рекомендуется использовать ключевые слова CROSS JOIN вместо альтернативного синтаксиса. Благодаря этому, другой программист сможет легко понять назначение данного фрагмента кода! Кроме того, использование альтернативного синтаксиса на основе списка разделенных запятыми таблиц чревато появлением ошибок, например, может произойти ненамеренное перекрестное объединение.

http://datareview.info/article/8-sposobov-obedineniya-join-tablic-v-sql-chast-1/

а официально скорее всего ANSI не комментирует
   Said_We
 
28 - 27.04.18 - 13:44
(20) Результат запросов будет разный, если одна из таблиц будет пустой. Декартово перемножение с пустой таблицей дает пустую таблицу. Если используется LEFT JOIN, то по первой таблице будут строки, а потом уже условие отработает.
Т.е. конструкции
select Т1.1, Т2.2 from T1, T2
И
select Т1.1, Т2.2 from T1 LEFT JOIN T2 ON 1=1

Дадут разный результат, если Т2 будет пустая таблица.
Это не замена одной конструкции на другую, это просто разные конструкции, которые по своей логике могут использоваться в разных случаях.
   Вафель
 
29 - 27.04.18 - 13:46
(28) у нас не left, а inner
   Адинэснег
 
30 - 27.04.18 - 14:16
произведение множеств, пересечение скидок где-то так считал


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