Имя: Пароль:
1C
1С v8
Как сделать левое соединение только ОДНОГО значения?
,
0 palpetrovich
 
16.01.13
17:10
Баян наверное, но что-то туплю...
Есть Таб1 (поля а,в)  и Таб2 (поля а,с), надо сделать выборку что-б в результат попали все поля Таб1 и ТОЛЬКО одно из Таб2 на каждое  Таб1.а=Таб2.а
1 НафНаф
 
16.01.13
17:11
сгруппировать или различные
2 ИС-2
 
naïve
16.01.13
17:12
поставить галочку выбрать 1 элемент (или как-то так на закладке дополнительно)
3 Ёпрст
 
16.01.13
17:13
(0) сгруппируй Таб2 в подзапросе, для с- возьми максимум, например
4 Reset
 
16.01.13
17:13
не успел!
5 Reset
 
16.01.13
17:14
пока писал ответ, уже ответили ;)
6 Reset
 
16.01.13
17:14
в (2) ответ неверный, в (1) и (3) норм
7 palpetrovich
 
16.01.13
17:15
(3) как-то неоптимально получается, вначале делать запрос по второй таблице (к примеру - очень большой), кидать ее (как я пониммааю) во временную и уже потом соединять с превой (маленькой относительно)
8 palpetrovich
 
16.01.13
17:17
+7 или я неверно понял?
9 Reset
 
16.01.13
17:17
(7) просто соединить, сгрупиировать по Таб1.а, Таб1.в
выбирать т1.а, т1.в, Максимум(т2.с)
10 ВалераОшкин
 
16.01.13
17:18
Вложенным запросом выбрать только одно значение и соединить
11 НафНаф
 
16.01.13
17:19
(7) сделай маленький во временную таблицу, удалив дубли и соедини с большой таблицей
12 ВалераОшкин
 
16.01.13
17:19
Вообще смысл париться сложными запросами, когда в запросе появился менеджер временных таблиц и можно в одном запросе делать кучу выборок?
13 jenny_tea
 
16.01.13
17:28
а левое соединение не предлагать?
14 palpetrovich
 
16.01.13
17:29
(9) так чет не то получается:
ВЫБРАТЬ
   Таб1.а,
   Максимум(Таб2.с) КАК с
   ИЗ
   Таб1 КАК Таб1
   ЛЕВОЕ СОЕДИНЕНИЕ
   Таб2 КАК Таб2
   ПО Таб1.а = Таб2.а
Сгруппировать по Таб1.а
15 Reset
 
16.01.13
17:36
(14)
Выбрать "Ц" как а Поместить т1 объединить Выбрать "Я";
Выбрать "Ц" как а,1 как с Поместить т2 объединить Выбрать "Ц",2 объединить Выбрать "Я",3 объединить Выбрать "Я",4;
Выбрать т1.а,максимум(т2.с)
из т1,т2 где т1.а=т2.а
Сгруппировать по т1.а
16 Reset
 
16.01.13
17:37
результат:
Ц    2    
Я    4
17 DozaT
 
16.01.13
17:40
непонятна задача, соединяют строки а не поля. покажи эти две таблицы как они выглядят с значениями  и что в итоге должно получится
18 palpetrovich
 
16.01.13
17:40
(16) не поспоришь  ...ваще запутал  :)
почемуто в (14) Максимум отрабатывает как Сумма
19 Reset
 
16.01.13
17:43
(18) Вроде все верно в (14)
20 palpetrovich
 
16.01.13
17:47
(19) казалось-бы, но группировка но  Таб1.а "все портит" :)
21 palpetrovich
 
16.01.13
17:53
в общем, увы, но эти 2 запроса дают одинаковый результат
1
ВЫБРАТЬ
   ВозвратТоваровПоставщикуТовары.Номенклатура КАК Номенклатура,
   ПартииТоваров.ДокументОприходования КАК ДокументОприходования,
   ПартииТоваров.КоличествоОстаток КАК КоличествоОстаток
ИЗ
   Документ.ВозвратТоваровПоставщику.Товары КАК ВозвратТоваровПоставщикуТовары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&МоментКон, ) КАК ПартииТоваров
       ПО ВозвратТоваровПоставщикуТовары.Номенклатура = ПартииТоваров.Номенклатура
           И ВозвратТоваровПоставщикуТовары.Склад = ПартииТоваров.Склад
           И ВозвратТоваровПоставщикуТовары.Количество <= ПартииТоваров.КоличествоОстаток
ГДЕ
   ВозвратТоваровПоставщикуТовары.Ссылка = &Ссылка
2
ВЫБРАТЬ
   ВозвратТоваровПоставщикуТовары.Номенклатура КАК Номенклатура,
   ПартииТоваров.ДокументОприходования КАК ДокументОприходования,
   МАКСИМУМ(ПартииТоваров.КоличествоОстаток) КАК КоличествоОстаток
ИЗ
   Документ.ВозвратТоваровПоставщику.Товары КАК ВозвратТоваровПоставщикуТовары
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&МоментКон, ) КАК ПартииТоваров
       ПО ВозвратТоваровПоставщикуТовары.Номенклатура = ПартииТоваров.Номенклатура
           И ВозвратТоваровПоставщикуТовары.Склад = ПартииТоваров.Склад
           И ВозвратТоваровПоставщикуТовары.Количество <= ПартииТоваров.КоличествоОстаток
ГДЕ
   ВозвратТоваровПоставщикуТовары.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
   ВозвратТоваровПоставщикуТовары.Номенклатура,
   ПартииТоваров.ДокументОприходования
22 palpetrovich
 
16.01.13
17:59
лан. спасибо всем, потопал домой. завтра подумаю
23 Ёпрст
 
16.01.13
18:00
Ё..
ВЫБРАТЬ
   Таб1.а,
   Таб1.с,
   Т.с
   ИЗ
   Таб1 КАК Таб1
   ЛЕВОЕ СОЕДИНЕНИЕ
  (выбрать
      Т.а,максимум(Т.с)как с
   из Таб2 как Т Сгруппировать по Т.а) как Т

   ПО Таб1.а = Т.а
24 palpetrovich
 
16.01.13
18:03
(23) спасибо, ЛЕВОЕ СОЕДИНЕНИЕ  (выбрать... пробовал, с "максимум" внутри - нет. Завтра проверю :)