我正在开发一个培训跟踪程序,但现在无法确定SQL查询。
我有3个表:employees, trainingRecords, masterList
。employees
和trainingRecords
通过empID
fkey相关联。trainingRecords
和masterList
通过TID
fkey相关联。
目前,培训记录表为空白,因为未输入任何内容(所有员工均未接受培训)。
我想用masterlist中trainingRecords
表中未说明的所有项目填充一个列表框。
由于trainingRecords
表为空白,因此它应该从lName, fName
表返回employees
,并为主列表中的所有条目返回docName, docNumber
。
我很困惑有什么建议么?
最佳答案
我假设您想用尚未完成的培训文件向所有员工多次显示。
SELECT a.lName, a.fName, b.docNumber, b.docName
FROM
(SELECT e.lName, e.fName, t.TID
FROM employees e
LEFT JOIN trainingRecords t ON e.empID = t.empID
) AS a,
(SELECT m.docNumber, m.docName, t.TID
FROM masterList m
LEFT JOIN trainingRecords t ON m.TID = t.TID
) AS b
WHERE a.TID IS NULL OR b.TID IS NULL
ORDER BY a.lName, b.docNumber
示例结果:
lName fName docNumber docName
Simpson Homer 1 Nuclear Physics for Dummies
Simpson Homer 2 Nuclear Physics for Beginners
Simpson Homer 3 Advanced Nuclear Physics
Simpson Lisa 3 Advanced Nuclear Physics
关于sql - SQL查询: list all items in one table that do not appear in another table,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4048709/