Левое соединение только с первой строкой набора слева #555088


#0 by Loyt
Таблицу а4, б4 нужно соединить по левому соединению с таблицей б1, с1 б3, с3 По полю "б", но так, чтобы соединялось только один (первый) раз. (поле "б" во второй таблице уникально) В результате получить что-то типа а1, б1, с1 а2, б2, с2 Это возможно организовать в запросе?
#1 by Shurjk
Что мешает?
#2 by Loyt
Мешает непонимание, как это описать в запросе.
#3 by Shurjk
Если не вдаваться в подробности того что ты написал а просто посмотреть на две начальных таблицы и ожидаемый результат то достаточно присоединить справа вторую таблицу к перовой по условию б=б.
#4 by Gr
ИЗ А ЛЕВОЕ СОЕДИНЕНИЕ Б как то так
#5 by Shurjk
Ндаа 1с породил кучу прогеров которые пишут запросы но не могут внятно сказать что в резулбтате него получиться. Щас еще вариантов на 200 постов будет.
#6 by Loyt
Обычное соединение - что-то типа такого ВЫБОР Таблица1.а Таблица1.б Таблица2.с ИЗ Таблица1 ЛЕВОЕ СОЕДИНЕНИЕ Таблица2 ПО Таблица1.б = Таблица2.б Как это допилить до ? Нет, тогда строки 3 не получится, а строки 4 вообще не будет.
#7 by Gr
полагаю не относится к ?
#8 by Gr
см , т.е. нужно использовать функция максимум или минимум по полю "с"
#9 by Shurjk
Зачем? Все так только вместо левое напиши правое.
#10 by Shurjk
+ и вместо 1.б напиши 2.б
#11 by Gr
правое ему не подойдет, поскольку потеряется часть записей из первой таблицы
#12 by Aprobator
во млин, до чего интересно народ живет, все какие то матрицы пытается запросом в 1С получить! Сколько с 1С работаю - ни разу таких задач не возникало (
#13 by Shurjk
Какие именно?
#14 by Ненавижу 1С
выбрать Т1.а, Т1.б, Т2.с из Т1 левое соединение (выбрать Т1.б как б, МИНИМУМ(Т1.а) как а из Т1 сгруппировать по Т1.б) КАК ТХ по ТХ.а=Т1.а левое соединение Т2 по ТХ.б=Т2.б
#15 by Shurjk
Результат этого запроса можешь написать?
#16 by Gr
конечно могу, разжевывать нет времени, извини, ничего личного
#17 by Loyt
То, что надо. Спасибо всем
#18 by Shurjk
Ну на примере данных двух таблиц, там разжевывать не надо всего лишь напиши какие строки в результате будут.
#19 by rs_trade
условие интересно звучит. соединить по левому соединению... других вариантов не предлагать что ли?
#20 by Shurjk
Решение еще больше удивляет.
#21 by Shurjk
+ По крайней мере таблицы в примере точно ему не соответствую.
#22 by Gr
вот пример двух таблиц при использовании правого соединения ты потеряешь запись Т1.а3  Т1.б3
#23 by Loyt
Имелось ввиду, что данные из первой таблице должны быть все, коряво выразился. Правое соединение не подходит тем более.
#24 by Gr
решение тоже верно, но более сложно, чем то, что в единственное что в синтакс. ошибка вместо ГРУППИРОВАТЬ надо СГРУППИРОВАТЬ
#25 by Shurjk
В условии не было что их потерять нельзя, там сделан упор на уникальное значение б во второй таблице.
#26 by Ненавижу 1С
в совсем не то
#27 by Shurjk
Так все таки какой результат в получиться.
#28 by Gr
:) (улыбка чеширского кота)
#29 by Ёпрст
как в не взлетит.
#30 by Кириллка
IF OBJECT_ID(N'[tempdb].[dbo].[#Tbl1]') IS NOT NULL DROP TABLE #Tbl1 GO IF OBJECT_ID(N'[tempdb].[dbo].[#Tbl2]') IS NOT NULL DROP TABLE #Tbl2 GO CREATE TABLE #Tbl1 (    fld1 char PRIMARY KEY,    fld2 char NOT NULL ) GO CREATE TABLE #Tbl2 (    fld1 char NOT NULL,    fld2 char PRIMARY KEY ) GO INSERT INTO #Tbl1 (fld1, fld2)    SELECT 'а1' as fld1, 'б1' as fld2 UNION ALL    SELECT 'а2' as fld1, 'б2' as fld2 UNION ALL    SELECT 'а3' as fld1, 'б2' as fld2 UNION ALL    SELECT 'а4' as fld1, 'б4' as fld2 GO INSERT INTO #Tbl2 (fld1, fld2)    SELECT 'б1' as fld1, 'с1' as fld2 UNION ALL    SELECT 'б2' as fld1, 'с2' as fld2 UNION ALL    SELECT 'б3' as fld1, 'с3' as fld2 GO SELECT    Tbl.fld1 as fld1,    Tbl.fld2 as fld2,    DivTbl.T2_fld2 as fld3 FROM #Tbl1 as Tbl (NOLOCK)        Tbl1.fld2 as fld2,        Tbl2.fld2 as T2_fld2    FROM #Tbl1 as Tbl1 (NOLOCK)    INNER JOIN #Tbl2 as Tbl2 (NOLOCK) ON Tbl2.fld1 = Tbl1.fld2        Tbl2.fld2 ) as DivTbl ON DivTbl.T1_fld1 = Tbl.fld1
#31 by 73
А кто сказал, что МИНИМУМ(а) подойдёт?
#32 by Ненавижу 1С
"один (первый) раз" я сделал эмпирическое предположение, не более
#33 by Shurjk
Вы уже дргу друга на ментальном уровне научились понимать:)
#34 by 73
Если в а2>а3 - то это не "первый"... Скорее, один(любой) раз...
#35 by Ненавижу 1С
если а2>а3, то а2 уж никак первым быть не может автор сам должен с упорядочиванием разобраться полагаю
#36 by 73
В а2 -во 2й строке, а3- в 3-ей. Значения их не указаны. Я имел ввиду, если в а2>а3, по результат как в не получится. А получится:
#37 by Ненавижу 1С
да я понял, но что ж уж тут поделаешь, какая постановка такое и решение
#38 by rs_trade
а изначально как задача звучит? в сабже предполагаемый способ решения.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С