J'ai deux tables d'un système de vote avec lequel je travaille.
Le premier est appelé les membres du comité
Et le second est appelé Approbation du Comité
Approbation du comité stocke les détails du vote qui ont été entrés par différents users. Voici un extrait de ce qu'il tiendra
La colonne de key étrangère CommitteeApprovalStatusID représente la valeur de vote . Sa table ressemble à
Colonne de key étrangère CommitteeRoleID dans le tableau des membres du comité représente un titre donné aux users dans ce comité Eg concierge, président, membre.
Je veux écrire une requête qui répertorie tous les users , ce qu'ils ont voté et qui n'a pas voté en fonction d'une application de licence particulière . Par exemple, pour une application de licence particulière 10342 le format serait comme
ID user | Rôle | Statut | Ce qu'il a voté |
Des exemples de déclarations que j'ai essayé était
SELECT * FROM CommitteeMembers LEFT OUTER JOIN ComitéApprobation ON CommitteeMembers.UserID = CommitteeApproval.UserID WHERE CommitteeApproval.LicenceApplicationID = 10682
Mais cela n'apporte que des valeurs nulles dans les colonnes de la table CommitteeApproval
J'ai essayé plusieurs déclarations mais aucune n'a fonctionné jusqu'ici. Quelqu'un sait une solution efficace pour y parvenir?
Vous pouvez OUTER JOIN et évaluer pour la présence de l'logging … si le dossier n'est même pas là, cela signifie que le membre n'a pas voté. Le rôle et MemberStatus doivent être joints à l'intérieur car ils existeront toujours pour chaque membre.
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