2016-12-31 2 views
1

Я отслеживаю людей, меняющих их имена. У меня есть три таблицы:Sqlite - получить самую последнюю запись за стол

TableOne 
id 
1 
2 

TableTwo    
Date  id FirstName NameID 
01/02/2016 1 TestOne  1 
01/03/2017 2 TestTwo  2 
01/04/2015 3 TestThree 1 

TableThree   
Date  id SecondName NameID 
01/01/2016 1 TestThree 1 
01/01/2018 2 TestFour 1 
01/10/2014 3 TestFive 2 

The NameIDs в таблицах 2 & 3 карты к идентификатору в таблице 1. Каждый раз, когда человек меняет свое имя я добавить запись в таблицу 2 и каждый раз, когда человек меняет свое второе name Я добавляю запись в таблицу 3. Я сохраняю список всех их исторических имен.

Моя цель состоит в том, чтобы использовать SELECT, запрос, чтобы вытащить обратно то, что сегодня называют каждого человека есть мне нужно выбрать самую последнюю пару имен для каждого уникального идентификатора в таблице 1.

Мой конец таблицы должен выглядеть это:

NameID FirstName SecondName 
1  TestOne  TestFour 
2  TestTwo  TestFive 

я могу получить самые последние firstnames и secondnames следующим образом:

SELECT FirstName, MAX(Date) FROM TableTwo GROUP BY NameID; 
SELECT SecondName, MAX(Date) FROM TableOne GROUP BY NameID; 

Но как я могу поместить эти 2 запросы вместе? (Извините, если легкий вопрос - я совершенно новой для этого и, пожалуйста, дайте мне знать, если что-то непонятно, вообще - спасибо заранее!)

ответ

1

Использование коррелируют подзапросы для поиска соответствующих имен:

SELECT id, 
     (SELECT FirstName 
     FROM TableTwo 
     WHERE NameID = TableOne.id 
     ORDER BY Date DESC 
     LIMIT 1 
     ) AS FirstName, 
     ... 
FROM TableOne; 
+0

Благодарности - просто что мне нужно. С новым годом! – SSS

Смежные вопросы