J'essaie de faire une table de liaison TSQL assez droite mais je tombe à la première haie, fondamentalement je veux un lien bidirectionnel.TSQL Problème - Table de lien
Par exemple ....
En cas de contact 1 ajoute contact 2, contactez 2 est connecté à contacter 1 (et vice versa) l'idée étant que la requête reconnaît qu'ils sont jumelés.
Tableau Exemple
RelatedDataID UniqueID Related_UniqueID
-------------------------------------------
1 AA BB
2 CC DD
3
utilisateurs Tableau
UserID UniqueID Username
----------------
1 AA Bob
2 BB Fred
3 CC Charlie
4 DD Billy
Donc, fondamentalement, quand je lance une requête avec UniqueID "AA" il retournera
Username RelatedID
------------------------
Bob 1
Fred 1
Charlie 0
Billy 0
Mais aussi quand je le lance sur UniqueID "CC" il devrait retourner
Username RelatedID
---------------------
Bob 0
Fred 0
Charlie 2
Billy 2
Est-ce que quelqu'un sait comment je peux y parvenir? Ma procédure stockée actuelle semble seulement ramener ceux qui sont liés, et non ceux qui ne sont pas liés. J'en ai besoin pour ramener une liste complète de tous les utilisateurs, mais pour que l'identificateur RelatedID revienne sous la forme d'un 0 ou de l'identificateur RelatedDataID.
Les ID uniques sont des GUID.
Voici mon instruction TSQL.
ALTER PROCEDURE sp_Test
@CompanyID int,
@UniqueID varchar(36),
@PersonTypeID int
AS
BEGIN
SET NOCOUNT ON;
SELECT
First_Name + ' ' + Last_Name AS Full_Name,
ISNULL(RelatedDataID,0) AS RelatedDataID
FROM
Users
LEFT JOIN
Related_Data
ON
Users.UniqueID = Related_Data.UniqueID
WHERE
Users.PersonTypeID = @PersonTypeID
AND
Users.Deleted = '0'
AND
((ISNULL(Related_Data.UniqueID,'') = '') OR (Related_Data.UniqueID = @UniqueID OR Related_Data.Related_UniqueID = @UniqueID))
Si possible, fournir un exemple plus détaillé; pourquoi Bob a-t-il une relation pour UniqueID = 2, lorsqu'il n'y a pas de lignes pour UniqueID = 2? – Andomar
Que se passe-t-il si Bob a plusieurs relations? Par exemple, supposons qu'il soit lié à Fred et Charlie. – Thomas
Ce que j'essaie de faire est d'avoir un lien bidirectionnel. Un exemple serait si j'ai passé UniqueID "1" et UniqueID 1 a été lié à UniqueID 2, il montrerait tous les contacts, mais signaler que UniqueID 1 a été lié à UniqueID 2 et vice versa. Donc, si je mets UniqueID 2, il obtiendrait tous les contacts, et montrerait que UniqueID 1 était lié (d'où RelatedDataID) – Tech