我有3张桌子:
Users - Username
Procedures - SeriesNum,ProcNum (Composite PKey),Description,CurrentRev
UsersProcedures - Username,SeriesNum,ProcNum,RevTrained,LevelTrained,DateTrained
我将如何查询,以便为每个用户显示所有过程,以及是否在这些过程中训练了用户过程表中的值(如果他们未经过培训,那么这些值将会到来因为它们不存在而为空。
我最接近的是这个查询:
SELECT Procedures.SeriesNum,Procedures.ProcNum,Description,CurrentRev,RevTrained,LevelTrained,DateTrained,Users.Username
FROM Procedures,Users
LEFT JOIN UsersProcedures ON UsersProcedures.Username = Users.Username
然而,这并不完全有效,因为它从UsersProcedures表中提取的值对于每个过程都是相同的,而不是每个过程都是唯一的。
答案 0 :(得分:2)
-- select whatever columns you like
SELECT p.*, u*, pu.*
-- a cross join conmbines all rows from both tables
FROM Procedures p
CROSS JOIN Users u
-- add the exp to the mix
LEFT JOIN UsersProcedures pu
ON pu.Username = u.Username
AND p.SeriesNum = pu.SeriesNum
AND p.ProcNum = pu.ProcNum