我正在做一个社交网站,需要用户能够互相加好友或者互相屏蔽。在我看来,两个用户可以是 Requestee (int), 待定, 块或 NULL. 我想用一个单一的视图来显示每个确认关系的单行。我的视图正确地显示了关系,但我不得不做了一个变通的办法,以只显示1行关系,而不将表与自己联合起来,并交换顺序或请求者和被请求者。
有人有什么办法可以清理这个问题吗?
谢谢,- Greg
关系表。
请求者(int)或阻止对方。在我看来,2个用户可以是Friend,Pending,Block,或者NULL。我想...
这是我最后用的。
SELECT DISTINCT
CASE WHEN f.Requestor < f.Requestee THEN f.Requestor ELSE f.Requestee END AS UserA,
CASE WHEN f.Requestor < f.Requestee THEN f.Requestee ELSE f.Requestor END AS UserB, CASE WHEN b.Requestor IS NULL AND b.Requestee IS NULL
THEN CASE WHEN f.AcceptedTimestamp IS NULL THEN 'Pending' ELSE 'Friend' END ELSE 'Block' END AS Type
FROM dbo.Relationship AS f LEFT OUTER JOIN
(SELECT Requestor, Requestee
FROM dbo.Relationship
WHERE (IsBlock = 1)) AS b ON f.Requestor = b.Requestor AND f.Requestee = b.Requestee OR f.Requestor = b.Requestee AND f.Requestee = b.Requestor
谁能想到更好的办法?