0

データベースに2つのテーブルがあります。

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

アカウントID1のユーザー名を選択すると、同じ方法で管理者とサポートが返されます。アカウントID 2のユーザー名を選択すると、管理者とサポートも返されます。アカウントID 3のユーザー名を選択すると、テストのみが返されます。

リンクアカウントテーブルのアカウントIDが1またはlinkaccountidが1の場合、その逆のようになり、両方のIDが返されます。

前もって感謝します

よろしく

アミット・ビアス

4

2 に答える 2

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)) 
于 2012-11-06T08:17:08.777 に答える
1

@SearchID検索したいIDになんとか変更できると仮定すると、これはそれを行う1つの方法です。

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のフィドルです

于 2012-11-06T08:04:28.620 に答える