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

Откуда:
Сообщений: 395
Есть две таблицы T1 и T2
Одной записи из T1 могут соответсвовать несколько записей в T2.
В общем стандартная такая ситуация.

Но как сделать объединеие этих таблиц, чтобы одной записи из T1 соответсвовала ОДНА запись из Т2 (самая последняя)?
21 авг 09, 12:23    [7566072]     Ответить | Цитировать Сообщить модератору
 Re: JOIN + выбрать самую последнюю запись  [new]
Glory
Member

Откуда:
Сообщений: 104760
xdx


Но как сделать объединеие этих таблиц, чтобы одной записи из T1 соответсвовала ОДНА запись из Т2 (самая последняя)?

И чем определяется эта "самая последность" ?
21 авг 09, 12:24    [7566081]     Ответить | Цитировать Сообщить модератору
 Re: JOIN + выбрать самую последнюю запись  [new]
xdx
Member

Откуда:
Сообщений: 395
Эта последность определяется очень даже явно! :-)
У записи есть дата создания, т.е. вот прямо так и надо взять эту самую последнюю, к которой дата сама последняя.
21 авг 09, 12:31    [7566133]     Ответить | Цитировать Сообщить модератору
 Re: JOIN + выбрать самую последнюю запись  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
делать к таблице вьюху, где стоит max(Mydate_field) и потом к вьюхе цеплять связи.
21 авг 09, 12:40    [7566202]     Ответить | Цитировать Сообщить модератору
 Re: JOIN + выбрать самую последнюю запись  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
xdx
Эта последность определяется очень даже явно! :-)
У записи есть дата создания, т.е. вот прямо так и надо взять эту самую последнюю, к которой дата сама последняя.
Пронумеровать записи запроса для T2, соответствующие каждой конкретной записи T1, используя порядок по дате создания.
С помощью WHERE или TOP(1)WITH TIES ... ORDER BY ... оставить только записи с номером 1.
21 авг 09, 14:40    [7567122]     Ответить | Цитировать Сообщить модератору
 Re: JOIN + выбрать самую последнюю запись  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
xdx,

DECLARE @t1 TABLE (id int IDENTITY(1, 1), f1 varchar(128))
DECLARE @t2 TABLE (id int IDENTITY(1, 1), t1_id int, f2 varchar(128), crt_date datetime)

INSERT @t1 (f1)
SELECT 'test @t1 1' UNION ALL
SELECT 'test @t1 2' UNION ALL
SELECT 'test @t1 3' UNION ALL
SELECT 'test @t1 4'

INSERT @t2 (t1_id, f2, crt_date)
SELECT 1, 'test @t2 1', '20090812' UNION ALL
SELECT 1, 'test @t2 2', '20090814' UNION ALL
SELECT 2, 'test @t2 3', '20090812' UNION ALL
SELECT 2, 'test @t2 4', '20090815' UNION ALL
SELECT 3, 'test @t2 5', '20090812'

SELECT t1.*, t2.*
FROM @t1 t1
LEFT JOIN @t2 t2
  ON t1.id = t2.t1_id
  AND t2.id = (SELECT TOP 1 id FROM @t2 WHERE t1_id = t1.id ORDER BY crt_date DESC)
?
21 авг 09, 14:58    [7567266]     Ответить | Цитировать Сообщить модератору
 Re: JOIN + выбрать самую последнюю запись  [new]
iljy
Member

Откуда:
Сообщений: 8711
xdx,
вариантов много, например
select * from
  T1
    outer apply
  (select top 1 * from T2
   where t2.link = t1.id
   order by date desc) t2
21 авг 09, 15:25    [7567526]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить