2016-12-31 5 views
1

名前を変更している人を追跡しています。私は3つのテーブルがあります。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 

を表1のIDへの表2 & 3マップで名前IDは、人は彼らの最初の名前を変更するたびに、私は表2にレコードを追加し、すべての時間は、人が自分と変化名前私はテーブル3にレコードを追加します。私はすべての歴史的な名前のリストを保持します。

私の目的は、今日は何一人一人の名前を引き戻すためにSELECTクエリを使用することですつまり、私は、テーブル内の各一意のIDの名前の最も最近のペアを選択する必要がありますされて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

関連する問題