选择数据反之亦然

时间:2012-11-06 07:45:48

标签: sql sql-server sql-server-2008 sql-server-2005

我的数据库中有两个表。

1) User Table

id  username    password    logo    email
1   admin        admin      NULL    1   
2   support     support     NULL    NULL    
3   test        test        NULL    NULL    


2) Link Account Table

ID  AccountID   LinkAccountID
1       1           2

现在,如果我选择accountid 1的用户名,那么它将返回我的管理员和支持     同样的方式,如果我选择accountid 2的用户名,那么它也将返回管理员和支持     如果我选择带有accountid 3的用户名,那么它将仅返回测试

如果在链接帐户表帐户ID为1或linkaccountid为1且将返回两个id

,则反之亦然

提前致谢

此致

Amit Vyas

2 个答案:

答案 0 :(得分:3)

Select u.id,u.Name
from user u
left join
(
Select AccountID as AID , LinkAccountID as sec from Account
union
Select LinkAccountID as AID,AccountID  as sec from Account
) a 
on a.AID=u.ID

where @SearchUser in (Coalesce(a.Aid,u.id),Coalesce(a.Sec,u.id)) 

答案 1 :(得分:1)

假设您可以设法将@SearchID更改为您要搜索的ID,那么这是一种方法

select * from users a
where a.id = @SearchID

or
 a.id in (
    select b.AccountID from link_account b where b.LinkAccountID = @SearchID
         union 
    select b.LinkAccountID from link_account b where b.AccountID = @SearchID);

我已经尝试了它并且它正在工作。

这是小提琴 http://sqlfiddle.com/#!3/738b7/110