我想做一個相當直接的TSQL鏈接表,但我在第一個障礙,基本上我想要一個雙向鏈接。TSQL問題 - 鏈接表
例如....
如果聯繫1將觸點2,然後與2被連接到觸點1(反之亦然)的想法是,該查詢識別它們被配對。
表實例
RelatedDataID UniqueID Related_UniqueID
-------------------------------------------
1 AA BB
2 CC DD
3
用戶表
UserID UniqueID Username
----------------
1 AA Bob
2 BB Fred
3 CC Charlie
4 DD Billy
所以基本上當我運行一個查詢用的UniqueID 「AA」,將返回
Username RelatedID
------------------------
Bob 1
Fred 1
Charlie 0
Billy 0
而且當我運行它在UniqueID「CC」上它應該返回
Username RelatedID
---------------------
Bob 0
Fred 0
Charlie 2
Billy 2
有誰知道我怎麼能做到這一點?我目前的存儲過程似乎只會帶回鏈接的鏈接,而不是那些沒有鏈接的鏈接。我需要它返回所有用戶的完整列表,但要讓RelatedID返回0或RelatedDataID。
UniqueID是GUID。
這裏是我的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))
如果可能的話提供一個更詳細的例子;爲什麼Bob在UniqueID = 2沒有行時有一個UniqueID = 2的關係? – Andomar 2011-01-19 22:14:52
如果Bob有多重關係會發生什麼?例如,假設他與弗雷德和查理有關。 – Thomas 2011-01-19 22:19:12
我想要做的是有雙向鏈接。一個例子是,如果我通過了UniqueID「1」並且UniqueID 1鏈接到了UniqueID 2,它會顯示所有的聯繫人,但是標誌着UniqueID 1鏈接到了UniqueID 2,反之亦然。所以如果我把UniqueID 2,它會得到所有的聯繫人,並顯示UniqueID 1被鏈接(因此RelatedDataID) – Tech 2011-01-19 22:31:52