|
как написать запрос, что бы первой таблице сопоставлялась только первая найденная запись
| ☑ |
0
Aydar
07.03.19
✎
09:51
|
как написать запрос, что бы первой таблице сопоставлялась только первая найденная запись из второй таблице?
|
|
1
FIXXXL
07.03.19
✎
09:52
|
(0) хз что ты задумал
как вариант: сделай ВТ с ВЫБРАТЬ ПЕРВЫЕ 1, а уже потом соединяй ее со второй
|
|
2
Aydar
07.03.19
✎
10:00
|
(1) (1) например, есть две таблицы
1-ая таблица
Поле1 Поле2
Знач1 20
Знач2 30
2-ая таблица
Поле1 Поле2
Знач1 100
Знач1 500
Допустим соединяю по Поле1 левым соединением
результат будет:
Поле1 Поле2
Знач1 100
Знач1 500
Знач2 NULL
Но мне нужно только значения первых сопоставленных, т.е.
Поле1 Поле2
Знач1 100
|
|
3
catena
07.03.19
✎
10:02
|
(2)"Первая" она какая? Сортировка есть в этой второй таблице?
|
|
4
Aydar
07.03.19
✎
10:07
|
(3) первая наибольшее число из второй таблицы
|
|
5
Aydar
07.03.19
✎
10:07
|
(4) *наибольшее число из первой таблицы
|
|
6
catena
07.03.19
✎
10:11
|
(4)Не подходит выбор 100 из (100,500) в примере под определение "наибольшее", еще варианты?
|
|
7
catena
07.03.19
✎
10:11
|
В общем, чтобы взять одно из нескольких, надо определиться, какое именно брать. Когда придумаете систему выбора, ее можно будет алгоритмизировать.
|
|
8
Лодырь
07.03.19
✎
10:12
|
(5) Ну так сгруппируй предварительно таблицу2 по полю знач, использовав функцию МАКС(Поле2)
|
|
9
azernot
07.03.19
✎
10:12
|
Сгруппировать результат соединения по полю 1 , с максимумом поля 2
|
|
10
Лодырь
07.03.19
✎
10:14
|
ВЫБРАТЬ
Таб1.Знач КАК Знач,
ВложенныйЗапрос.ПолеТаб2 КАК ПолеТаб2
ИЗ
Таб1 КАК Таб1
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Таб2.Знач КАК Знач,
МАКСИМУМ(Таб2.ПолеТаб2) КАК ПолеТаб2
ИЗ
Таб2 КАК Таб2
СГРУППИРОВАТЬ ПО
Таб2.Знач) КАК ВложенныйЗапрос
ПО Таб1.Знач = ВложенныйЗапрос.Знач
|
|