【发布时间】:2012-12-17 14:05:42
【问题描述】:
我有三张桌子。
Table1(Table1Id, Field1, Field2)
Table2(Table2Id, Table1Id, AuditDate, Field1, Field2)
Table3(Table3Id, Table1Id, AuditDate, Field1, Field2)
我想要做的是选择 Table1 中的所有记录和字段,查看 Table2 和 Table3 以查找匹配的 Table1Id,然后从 Table3 中选择具有最新 AuditDate 的记录。我觉得我需要进行这样的查询。
SELECT DISTINCT Table1.Table1Id, Table1.Field1, Table1.Field2,
Table2.Field1, Table2.Field2,
Table3.Field1, Table3.Field2
FROM (Table1
INNER JOIN Table2 ON Table1.Table1Id = Table2.Table2Id)
INNER JOIN Table3 ON Table1.Table1Id = Table3.Table3Id
WHERE Table3.AuditDate =
(SELECT MAX(AuditDate) FROM Table3
WHERE Table1.Table1Id = Table3.Table3Id)
这个半有效。例如,如果 Table3 中没有任何与 Table1 相关的记录,则不会返回任何内容。我需要确保为 Table1 中的每条记录创建一条记录。
【问题讨论】:
-
我已将此问题标记为删除,因为它没有得到正确解释,并且我不想在发布答案后对其进行编辑。我已经在另一个问题中正确解释了。