我有两张与我合作的投票系统表。
第一个被称为委员会成员
第二个被称为委员会批准
委员会批准存储不同用户输入的投票详细信息。下面是它将保留的内容的片段
CommissionApprovalStatusID外键列代表 投票 值。它的表看起来像
委员会成员委员会成员表中的外键列代表给予该委员会用户的标题E.ganitor,主席,成员。
我想根据列出所有用户,他们投票的内容以及谁没有投票的查询>特定许可证申请。例如,对于特定许可证应用程序10342 ,格式将类似于
UserID |角色|状态|他投了什么|
我试过的陈述的例子是
SELECT * FROM CommitteeMembers LEFT OUTER JOIN CommitteeApproval ON CommitteeMembers.UserID = CommissionApproval.UserID WHERE委员会批准.LicenceApplicationID = 10682
但是这只会从委员会批准表的列中带来空值
我尝试了各种各样的陈述,但到目前为止还没有。任何人都知道实现这一目标的有效解决方案吗?
答案 0 :(得分:2)
您可以OUTER JOIN并评估是否存在记录...如果记录不存在,则表示该成员未投票。角色和MemberStatus应该是内部连接的,因为它们将始终存在于每个成员中。
SELECT
committeeMembers.UserID,
committeeMemberStatus.committeeMemberStatus AS [MemberStatus],
committeeRoles.CommitteeRoleName AS [Role],
Case
When committeeApproval.CommitteeApprovalStatusID IS NULL Then 'No Vote'
Else committeeApprovalStatuses.CommitteeApprovalStatusName
End AS [ApprovalStatus],
FROM CommitteeMembers committeeMembers
INNER JOIN CommitteeMemberStatus committeeMemberStatus ON committeeMemberStatus.CommitteeMemberStatusID = committeeMembers.CommitteeMemberStatusID
INNER JOIN CommitteeRoles committeeRoles ON committeeRoles.CommitteeRoleID = committeeMembers.CommitteeRoleID
LEFT OUTER JOIN CommitteeApproval committeeApproval ON committeeApproval.UserID = committeeMembers.UserID