アクセスデータベースを使用していて、このようにいくつかのテーブルを設定しています。
Table1(Table1Id, Field1, Field2, ...)
Table2(Table2Id, Table1Id, AuditDate, Field1, Field2, ...)
Table1のすべてのレコードと、最新のAuditDateを持つTable2のレコードを選択しようとしています。Table2にTable1に結び付けるエントリがない場合は、Table1の行と、Table2のデータの取得元となる一連の空のフィールドにデータを入力するだけです。これが私がこれまでに持っているクエリです。
SELECT Table1.TableId,
Table1.Field1,
Table1.Field2,
Table2.Field1,
Table2.Field2
FROM Table1
LEFT OUTER JOIN Table2 ON Table1.TableId = Table2.Table1Id
WHERE Table2.AuditDate = (SELECT MAX(AuditDate) FROM Table2 WHERE Table1.TableId = Table2.Table1Id)
これに伴う問題は、2つのレコードしか返さないことです。Table2には2つのエントリしかありませんが、Table2で一致するものだけでなく、Table1のすべてのレコードのデータの行を返すようにします。