|   |   | 
| 
 | 1С 8.3 Странный синтаксис левого соединения | ☑ | ||
|---|---|---|---|---|
| 0
    
        СамоСабой 14.05.24✎ 13:02 | 
        Здравствуйте.
 Имеется запрос |Выбрать | Покупатель.НомерДома КАК ПокупательНомерДома, | Поставщик.улица КАК ПоставщикУлица, | Поставщик.номерДома КАК ПоставщикНомерДома, | Поставщик.ТипДома КАК ПоставщикТипДома, | Продавец.улица КАК ПродавецУлица, | Продавец.номерДома КАК ПродавецНомерДома, | Продавец.ТипДома КАК ПродавецТипДома, | ТочкаДоставки.Улица КАК ТочкаДоставкиУлица, | ТочкаДоставки.НомерДома КАК ТочкаДоставкиНомерДома, | ТочкаДоставки.ТипДома КАК ТочкаДоставкиТипДома, | ЕСТЬNULL(КонечныйПокупатель.индекс, """") КАК КонечныйПокупательИндекс, | ЕСТЬNULL(КонечныйПокупатель.город, """") КАК КонечныйПокупательГород, | ЕСТЬNULL(КонечныйПокупатель.Поле5, """") КАК КонечныйПокупательНасПункт, | ЕСТЬNULL(КонечныйПокупатель.Улица, """") КАК КонечныйПокупательУлица, | ЕСТЬNULL(КонечныйПокупатель.НомерДома, """") КАК КонечныйПокупательНомерДома, | ЕСТЬNULL(КонечныйПокупатель.ТипДома, """") КАК КонечныйПокупательТипДома |ИЗ | Покупатель КАК Покупатель | ЛЕВОЕ СОЕДИНЕНИЕ КонечныйПокупатель КАК КонечныйПокупатель | ПО (ИСТИНА), | ТочкаДоставки КАК ТочкаДоставки, | Плательщик КАК Плательщик, | Продавец КАК Продавец, | Поставщик КАК Поставщик | |||
| 1
    
        Волшебник 14.05.24✎ 13:04 | 
        Какой вопрос-то?     | |||
| 2
    
        СамоСабой 14.05.24✎ 13:07 | 
        Тут Покупатель,КонечныйПокупатель, ТочкаДоставки, Платильщик,Продавец,Поставщик - это временные таблицы
 Конструктор запроса ошибок не находит Не понятно, что означают перечисленные через запятую таблицы в : ЛЕВОЕ СОЕДИНЕНИЕ КонечныйПокупатель КАК КонечныйПокупатель | ПО (ИСТИНА), | ТочкаДоставки КАК ТочкаДоставки, | Плательщик КАК Плательщик, | Продавец КАК Продавец, | Поставщик КАК Поставщик Теоретически тут должно быть условия связи, а как понять приведенное выше. Прошу подсказать | |||
| 3
    
        Волшебник 14.05.24✎ 13:07 | 
        Это какой-то бред от такого же генератора бреда как и Вы.     | |||
| 4
    
        СамоСабой 14.05.24✎ 13:08 | 
        Этот бред - работает без ошибок     | |||
| 5
    
        Волшебник 14.05.24✎ 13:11 | 
        (4) Это не отменяет его статуса как бреда. Можно навалить тонны кода, которые будут выполняться, но тупо не нужны.     | |||
| 6
    
        СамоСабой 14.05.24✎ 13:12 | 
        Синтаксически тут все правильно - что это означает - не понятно     | |||
| 7
    
        Волшебник 14.05.24✎ 13:12 | 
        (6) Удалите.     | |||
| 8
    
        СамоСабой 14.05.24✎ 13:21 | 
        Похоже я догадался - это декартово произведение всех перечисленных таблиц, первая из которых - левое соединение.
 Причем оно тоже фактически является декартовым -т.к. условие связи = ИСТИНА всегда. Если я правильно понимаю то декартово произведение дает не пустую таблицу только тогда когда во всех сомножителях есть хотябы одна запись. | |||
| 9
    
        DJ Anthon 14.05.24✎ 13:22 | 
        (5) в типовых полно соединений по истина, в чем бред-то? может, проще было бы по-другому, но хз, может, там шаблоны запросов формируются программно     | |||
| 10
    
        DJ Anthon 14.05.24✎ 13:22 | 
        (8) декартово произведение таблиц - это полное соединение, а тут левое. к одной таблице подтягивается другая таблица без условий. скорее всего, в них всего по одной записи и они склеиваются.     | |||
| 11
    
        MMB 14.05.24✎ 13:29 | 
        На сколько я понимаю когда таблицы перечислены через запятую то это полное соединение. Можно написать
 | ПОЛНОЕ СОЕДИНЕНИЕ ТочкаДоставки КАК ТочкаДоставки ПО ИСТИНА, получится то же самое, т.е. декартово произведение. В запросах это имеет смысл только если в присоединяемых таким образом таблицах находится только одна строка, например значение какой-то константы - в этом случае количество записей не увеличится, просто добавится колонка. Это может быть нужно если ,например, в запрос внутри СКД нужно добавить значение константы чтобы использовать его в условиях или вычислениях, но при этом заполнять параметры или использовать функции общих модулей не хочется. Ну собственно пока я писал уже разобрались. | |||
| 12
    
        Ёпрст гуру 14.05.24✎ 13:40 | 
        (0) 
 >>>Не понятно, что означают перечисленные через запятую таблицы в cross join | |||
| 13
    
        Мультук гуру 14.05.24✎ 13:54 | 
        (0) 
 По тексту, читайте стандарты SQL -- они рулез. Ну хот я бы wiki:Join_(SQL) P.S. Давным-давно, в далекой... Вместо inner join писали вот так (см ниже) Потом стандарты стали дополнять, улучшать. SELECT * FROM Person, City WHERE Person.CityId = City.Id | |||
| 14
    
        СамоСабой 14.05.24✎ 13:53 | 
        Тут прикол в том, что во всех таблицах должна быть хотябы одна запись, а КонечныйПокупатель - может быть пусто     | |||
| 15
    
        Смотрящий 14.05.24✎ 13:57 | 
        (0) Работает ? Не трожъ !!     | |||
| 16
    
        СамоСабой 14.05.24✎ 14:03 | 
        (15) СамоСабой     | |||
| 17
    
        Мультук гуру 14.05.24✎ 14:05 | 
        (14) 
 >> КонечныйПокупатель - может быть пусто И ради этого "там" написано ЛЕВОЕ СОЕДИНЕНИЕ ПО {похрен, все на всех. ИСТИНА} До сих пор чего-то не понятно? P.S. Шёл ёжик по лесу, забыл как работает sql и умер... | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |