2012-11-06 86 views
0

我在我的數據庫中有兩個表。選擇數據反之亦然

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,將提前返回兩個編號

感謝

問候

阿米特·維亞斯

回答

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)) 
+0

由於這將正常工作的小提琴 –

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

相關問題