Соединение таблиц на основе коррелированного подзапроса, SQL - PullRequest
0 голосов
/ 28 октября 2011

Мне нужно объединить две таблицы, которые описаны ниже:

Table1:
ID  Date       Info1
1   1/29/2011     i10
1   1/30/2011     i11


Table2:
ID  Date       Info2
1    1/31/2011   i2

Я хотел бы оставить записи в таблице 2, идентифицированные по идентификатору, месяцу и году, в таблице 1, идентифицированной той жеID, месяц, год, но используйте последнюю доступную дату записи в качестве присоединяющейся записи.Так, например, в приведенных выше данных я хотел бы присоединить запись в таблице 2 ко второй записи в таблице 1, потому что они совпадают по идентификатору, месяцу, году и записи 2 таблицы 1 имеет самый большой доступный день для этого (идентификатор, месяц,Год) сочетание.Правильный результат:

ИД Дата Инфо1 Инфо2

1 30.01.2011 i11 i2

Код SQL, который я приду такдалеко довольно запутанный.Пожалуйста, предложите что-нибудь.Я использую MySQL.

1 Ответ

2 голосов
/ 28 октября 2011

[Я хочу] ... использовать дату последней доступной записи в качестве присоединяющейся записи

Сначала решите это, используя производную таблицу. Предполагая, что ID, Date уникален, вы можете легко сгруппировать по ID и взять МАКСИМАЛЬНУЮ дату.

SELECT
   T1.*,
   T2.*
FROM Table1 as T1
JOIN (
   SELECT 
      ID, MAX(Date) as Date
   FROM Table1
   GROUP BY 
      ID
) as Last ON
   T1.ID = Last.ID
   AND T1.Date = Last.Date
LEFT OUTER JOIN Table2 as T2 ON
   T1.ID = Last.ID
   AND MONTH(T1.Date) = MONTH(T2.Date)
   AND YEAR(T1.Date) = YEAR(T2.Date)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...