Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объединение таблиц по диапазону значений  [new]
saxix
Member

Откуда:
Сообщений: 735
Подскажите по запросу. Не знаю как связать таблицы
Есть две таблицы
create table Table1
(
	id varchar(50),
	a int,
	b int
);

create table Table2
(
	a int,
	b int,
	val int
)


insert into Table1(id, a, b) values("1000", 10, 100);
insert into Table1(id, a, b) values("1001", 20, 200);
insert into Table1(id, a, b) values("1002", 30, 300);

insert into Table2(a, b, val) values(11, 101, 12);
insert into Table2(a, b, val) values(11, 101, 13);
insert into Table2(a, b, val) values(15, 101, 14);
insert into Table2(a, b, val) values(11, 110, 12);

insert into Table2(a, b, val) values(21, 198, 54);
insert into Table2(a, b, val) values(19, 201, 57);
insert into Table2(a, b, val) values(25, 198, 55);
insert into Table2(a, b, val) values(21, 209, 54);

insert into Table2(a, b, val) values(30, 300, 56);
insert into Table2(a, b, val) values(31, 300, 56);
insert into Table2(a, b, val) values(35, 300, 56);
insert into Table2(a, b, val) values(30, 310, 56);


Требуется объединить записи таблицы Table1 и Table2 по полям a и b, при условии что значение Table2.a лежит в диапазоне от Table2.a - 5 до Table2.a + 5, а значение Table2.b лежит в диапазоне от Table2.b- 5 до Table2.b + 5
20 июл 15, 18:24    [17914302]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц по диапазону значений  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
saxix,

Вы не написали условие объединения для Table1.
20 июл 15, 18:31    [17914322]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц по диапазону значений  [new]
saxix
Member

Откуда:
Сообщений: 735
Владислав Колосов
saxix,

Вы не написали условие объединения для Table1.

На меня нашло прозрение )))
select table1.id, sum(table2.val) / count(table2.val) from table1 
left join table2 
on 
table1.a - 5 <  table2.a and
table1.a + 5 >  table2.a and
table1.b - 5 <  table2.b and
table1.b + 5 >  table2.b 
group by table1.id


На самом деле надо было еще и агрегацию сделать.
20 июл 15, 18:37    [17914355]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц по диапазону значений  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
saxix
На меня нашло прозрение )))
Что то мне подсказывает, что это неправильно, кросс-джойн получается
20 июл 15, 20:35    [17914694]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц по диапазону значений  [new]
saxix
Member

Откуда:
Сообщений: 735
alexeyvg
saxix
На меня нашло прозрение )))
Что то мне подсказывает, что это неправильно, кросс-джойн получается

Да мне надо было просто понять, какое условие для объединения. Вчера тупил по-страшному
21 июл 15, 10:37    [17915837]     Ответить | Цитировать Сообщить модератору
 Re: Объединение таблиц по диапазону значений  [new]
saxix
Member

Откуда:
Сообщений: 735
saxix
alexeyvg
пропущено...
Что то мне подсказывает, что это неправильно, кросс-джойн получается

Да мне надо было просто понять, какое условие для объединения. Вчера тупил по-страшному

Ну и в итоговом запросе в блоке ON перепутал местами имена таблиц
21 июл 15, 10:38    [17915846]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить