我有三张 table .
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中每条记录的记录 .
4 回答
它应该是这样的查询:
这可能对你有帮助,
听起来你想要原始查询的结果,加上表1中没有相应记录的表3中的记录(或表2) . 这可以通过将
INNER JOIN
替换为LEFT JOIN
并将WHILE
子句转换为ON
子句来获得 . 然后,您将获得此查询,即使在其他表中找不到相应的记录,也将返回Table1中的记录 .尝试