Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1) / 7 сообщений из 7, страница 1 из 1
28.06.2002, 13:30:55
    #32034270
Dvorez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1)
Подскажите пожалуйста как бы сделать запрос такого смысла:
select t1.f1,t2.f1
from t1
where
t1.f1 *= (select t2.f1 top 1 from t2 where t2.f1=t1.f1)

То есть выбрать все записи из таблицы t1 дополнив их top 1 записями из таблицы t2 c объединением по полю f1
...
Рейтинг: 0 / 0
28.06.2002, 13:36:33
    #32034272
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1)
select t1.f1, (select top 1 t2.f1 from t2 where t2.f1=t1.f1) as t2_f1
from t1
...
Рейтинг: 0 / 0
30.06.2002, 10:36:08
    #32034412
Dvorez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1)
Уважаемый Glory, спасибо за идею, но не все так просто, запрос коррелированый. Тут вся сложность в том, чтобы совместить левый JOIN и подзапрос с ТОР 1. В принципо можно через временные таблицы выкрутится, но хочется быть деликатнее.
...
Рейтинг: 0 / 0
30.06.2002, 12:41:58
    #32034415
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1)
Тогда покажите структуры таблиц, примеры данных и необходимый вам результат.
...
Рейтинг: 0 / 0
30.06.2002, 12:56:08
    #32034420
Dvorez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1)
Таблицы такие:

T1

k v
1 one
2 two
3 thre
4 fore
5 five

T2

k v
1 one1
1 one2
2 two1
2 two2
5 five1

Надо получить:

T3

k v1 v2
1 one one1
2 two two1
3 thre null
4 fore null
5 five five1

Причем абсолютно не важно какие записи включить в обьединение из второй таблицы, главное, чтобы в результате значения поля "к" не повторялись более одного раза.
...
Рейтинг: 0 / 0
30.06.2002, 13:07:35
    #32034422
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1)
Тогда не пойму, а чем вас не устраивает предложенный мной вариант ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table #t1(k int, v varchar( 50 ))
create table #t2(k int, v varchar( 50 ))

insert #t1 values( 1 , 'one') 
insert #t1 values( 2 , 'two' )
insert #t1 values( 3 , 'thre' )
insert #t1 values( 4 , 'fore' )
insert #t1 values( 5 , 'five')


insert #t2 values( 1 , 'one1') 
insert #t2 values( 1 , 'one2' )
insert #t2 values( 2 , 'two1' )
insert #t2 values( 2 , 'two2' )
insert #t2 values( 5 , 'five1' )

select a.k, a.v, (select top  1  b.v from #t2 b where b.k=a.k) as t2_v
from #t1 a

drop table #t1
drop table #t2
...
Рейтинг: 0 / 0
30.06.2002, 13:19:24
    #32034425
Dvorez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1)
Упс. Почемуто думал, что коррелированные запросы можно писать только после FROM.

Огромное спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / t1.f1 *= (select t2.f1top 1 from t2 where t2.f1=t1.f1) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]