我正在开发一个培训跟踪程序,但现在无法确定SQL查询。

我有3个表:employees, trainingRecords, masterList
employeestrainingRecords通过empID fkey相关联。
trainingRecordsmasterList通过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/

10-10 06:37