Ceci est une question similaire à une autre question que j'ai publiée here mais est un peu différente. J'essaie d'obtenir une liste de toutes les instances d'utilisateurs existants mutuels et non mutuels. Ce que je veux dire, c'est que le résultat renvoyé par la requête retournera une liste d'utilisateurs avec leur collègue. Il est similaire à la question here, mais la différence est que les utilisateurs non mutuels seront retournés aussi et sans la duplicité des utilisateurs mutuellement existants retournent dans la liste (voir l'image ci-dessous dans l'ordre simplifier tout cela).
Je pris la réponse originale de Thomas (Thanx à nouveau Thomas)
Select D1.u_username, U1.Permission, U1.Grade, D1.f_username, U2.Permission, U2.Grade
from tblDynamicUserList As D1
Join tblDynamicUserList As D2
On D2.u_username = D1.f_username
And D2.f_username = D1.u_username
Join tblUsers As U1
On U1.u_username = D1.u_username
Join tblUsers As U2
On U2.u_username = D2.u_username
et après plusieurs essais j'ai commenté 2 lignes (ci-dessous).
Les résultats retournés sont ce que j'essaie d'accomplir, comme décrit au début de cette question, à l'exception de la "duplicité" renvoyée par les utilisateurs mutuellement existants dans la table.
Comment puis-je éliminer cette duplicité?
Select D1.u_username, U1.Permission, U1.Grade, D1.f_username, U2.Permission, U2.Grade
from tblDynamicUserList As D1
Join tblDynamicUserList As D2
On D2.u_username = D1.f_username
/* And D2.f_username = D1.u_username /
Join tblUsers As U1
On U1.u_username = D1.u_username
Join tblUsers As U2
On U2.u_username = D2.u_username
/ WHERE D1.U_userName < D1.f_username */
* Capture d'écran qui aide l'espérons expliquer tout cela.
http://www.marketing2go.co.il/SqlQuestion.jpg
Obtenir des champs qui existent mutuellement et non mutuellement dans la même table dans deux colonnes
Voici les résultats de la requête mise à jour (avec les 2 lignes commentées)
http://www.marketing2go.co.il/QueryResults.jpg
Les résultats requis doivent être sans lignes 1 et 2 (ou sans lignes 3 et 5), parce qu'ils sont en effet, une duplicité. C'est parce que cette paire existe dans les rangées 3 et 5 (l'ordre des noms dans chaque paire est sans importance). En l'absence d'un meilleur mot, c'est plutôt une duplicité logique.
Beaucoup Merci à l'avance
Il peut être plus utile de montrer votre sortie préférée, les gens peuvent viser à obtenir les résultats que vous voulez. – Rick