我正在制定一个培训计划,但我无法弄清楚 SQL 查询。我有 4 个表:userProfilesTbl、trainingTbl、userAssessmentTbl 和 setsTbl userProfilesTbl 和 userAssessmentsTbl 通过作为唯一身份字段类型的 UserId fkey 相关。
trainingTbl 和 userAssessmentTbl 通过 tt_id fkey INT 字段类型关联。setsTbl 和 trainingTbl 通过 s_id fkey INT 字段类型关联。
trainingTbl 填充了指定用户组在指定日期执行的培训。
userAssessmentTbl 由个人用户培训(结果、注释等)填充。
userProfilesTbl 包含所有未包含在成员资格和角色框架中的附加用户信息(连接到 aspnet_users 表)。
setsTbl 由不同类型的训练列表填充。
我想显示所有训练集和用户,无论他们是否完成了训练。
Gridview(它是一个 PIVOT 表)应该从 userProfilesTbl 返回 surName,从 setsTbl 返回 setName,从 userAssessmentTbl 返回结果(值)。
目前我有 2 个选择语句
显示没有任何训练结果的 setName 和 surname
Dim query As String = "SELECT * FROM userProfilesTbl LEFT OUTER JOIN userAssessmentTbl ON userProfilesTbl.UserId = userAssessmentTbl.UserId LEFT OUTER JOIN trainingTbl ON userAssessmentTbl.tt_id = trainingTbl.tt_id LEFT OUTER JOIN setsTbl ON trainingTbl.s_id = setsTbl.s_id WHERE userProfilesTbl.st_id=@st_id AND userProfilesTbl.wa_id=@wa_id AND DATEPART(mm,t_date) = @m_date AND DATEPART(yyyy,t_date) = @y_date ORDER BY surname ASC
显示训练结果 setName,仅显示完成训练的用户的姓氏,并且仅显示他们进行的训练。不显示所有其他用户和培训。
SELECT * FROM userProfilesTbl, setsTbl, userAssessmentTbl, trainingTbl WHERE (userProfilesTbl.UserId = userAssessmentTbl.UserId) AND (userAssessmentTbl.tt_id = trainingTbl.tt_id) AND userProfilesTbl.st_id=@st_id AND userProfilesTbl.wa_id=@wa_id AND DATEPART(mm,t_date) = @m_date AND DATEPART(yyyy,t_date) = @y_date ORDER BY surname ASC
我很难过任何建议?