【发布时间】:2019-04-03 17:51:41
【问题描述】:
情况概览
当前的问题是关于从两个表table A(material)和table B(MaterialRevision)中选择值的问题。但是,表 A 的 PK 在表 B 中可能存在也可能不存在。当它不存在时,此问题中描述的查询将不会返回表 A 的值,但它应该。所以基本上这就是发生的事情:
查询只在 B.id 中存在 A.id 时返回值,实际上,当 B.id 中不存在 A.id 时,我需要它从 A 中返回值。
问题:
假设有两个表。表 Material 和 Table Material Revision。 请注意,PK idMaterial 是 MaterialRevision 中的 FK。
查询目标
Obs:记住这两张表是真实的简化版 表格。
对于每个材质,打印材质变量和来自 MaterialRevision 的最后一个(MAX)RevisionDate。如果没有 RevisionDate,则为“最后修订日期”打印 BLANK ("")。
发生了什么错误
对于每个材质,打印材质变量和来自 MaterialRevision 的最后一个(MAX)RevisionDate。如果 Material 没有 Revision,则不打印 Material (SKIP)。
当前代码
SELECT
Material.idMaterial,
Material.nextRevisionDate,
Material.obsolete,
lastRevisionDate
FROM Material,
(SELECT MaterialRevision.idMaterial, max(MaterialRevision.revisionDate) as "revisionDate" from MaterialRevision
GROUP BY MaterialRevision.idMaterial
) AS Revision
WHERE (Material.idMaterial = Revision.idMaterial AND Material.obsolete = 0)
用于达到此问题所述状态的参考和链接
Why is MAX() 100 times slower than ORDER BY ... LIMIT 1?
MySQL get last date records from multiple
MySQL - How to SELECT based on value of another SELECT
MySQL Query Select where id does not exist in the JOIN table
PS我希望这个问题得到正确理解,因为我花了很多时间来构建它。我在stackoverflow和之后研究了很多 几次尝试都失败了,我别无选择,只能寻求帮助。
【问题讨论】: