|
Как сделать левое соединение только ОДНОГО значения? | ☑ | ||
---|---|---|---|---|
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) спасибо, ЛЕВОЕ СОЕДИНЕНИЕ (выбрать... пробовал, с "максимум" внутри - нет. Завтра проверю :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |