我遇到了一个问题。我有 3 张 table ,我加入了他们但无法得到正确的答案,如果有人可以帮助我,我将不胜感激。所以我想要的是让 Answer 向我展示未使用的 Material 。表:
在很多帮助下,我得到了所有未使用的 Material :
SELECT DISTINCT(Materials.Material_Name) AS Unused_materials FROM Materials
LEFT JOIN Table2 ON Table2.Material_Number = Materials.Material_Number
LEFT JOIN Table1 ON Table1.Procedure_Name = Table2.Procedure_Name
WHERE Table1.Procedure_Name IS NULL
更新: 如果我可以在同一篇文章中再问一个问题。或许任何人都知道如何获得上述信息,只需通过通缉日。喜欢:2012-11-20 未使用的 Material ?
最佳答案
按照现有的方式加入表 1 和表 2 只会为您提供已用 Material 的行。您要做的是选择所有未使用的 Material 。为此,只需将 NOT IN 结构与子查询一起使用:
SELECT Material_Name AS Unused_materials
FROM Materials
WHERE Materials.Material_Number
NOT IN (SELECT Material_Number FROM Table2)
更新:现在我了解了数据模型(只需要表 1 中列出的过程中未使用的 Material ),如果对查询:
SELECT Material_Name AS Unused_materials
FROM Materials
WHERE Materials.Material_Number
NOT IN (SELECT Material_Number FROM Table2
INNER JOIN Table1
ON Table1.Procedure_Name = Table2.Procedure_Name)
关于MySQL 左连接(我认为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20147671/