2015-05-20 4 views
1
I have tow table as below 

FWTableКак получить 2 идентификатор из буксировки колонки и получить все записи из другой таблицы

mid uname gender avatar   email   psw  dob   city 
1 User 1 Male cat.jpg   [email protected] psw1 2015-05-18 Ahmedabad 
2 User 2 Female Koala.jpg  [email protected] psw2 2015-05-15 Jamnagar 
3 User 3 Male Desert.jpg  [email protected] psw3 2015-04-25 Porbandar 
4 User 4 Female Jellyfish.jpg [email protected] psw4 2015-06-11 Jamnagar 
5 User 5 Male Penguins.jpg [email protected] psw5 2015-07-10 Jamnagar 
6 User 6 Female     [email protected] psw6 2015-05-12 Jamnagar 

FriendsList

fid  mid friend_id friend_status 
1  1 2   1 
2  1 3   0 
3  2 4   0 
1002 3 4   1 
1003 5 1   1 

Когда пользователь 1 (середина 1) онлайн, я тусклый показать те друзья любят.

2 User 2 Female Koala.jpg  [email protected] psw2 2015-05-15 Jamnagar 
5 User 5 Male Penguins.jpg [email protected] psw5 2015-07-10 Jamnagar 
+2

Какие СУБД вы используете? что ты уже испробовал? – CeOnSql

+0

SQL Server 2012, я хочу id 2,5, когда пользователь 1 (средняя 1) активен – user3201333

+1

Почему пользователь 3 не является результатом? Он дружит с пользователем 1 – Andomar

ответ

0

Попробуйте это:

select t1.* 
from FWTable t1 
join FriendsList t2 on t1.mid = t2.mid 
where t2.friend_id = 1 
and status = 1 

union 

select t1.* 
from FWTable t1 
join FriendsList t2 on t1.mid = t2.friend_id 
where t2.mid = 1 
and status = 1 
+0

Thax Max it't Work .... – user3201333

0
with all_friendships as (
    --making a distinct list of all friendships, for both directions 
    select mid as the_user, friend_id as the_friend 
     from FriendsList 
     where friend_status = 1 
    union 
    select friend_id as the_user, mid as the_friend 
     from FriendsList 
     where friend_status = 1 
) 

select mid, uname, gender, avatar, email, psw, dob, city 
from all_friendships 
inner join FWTable on the_friend = mid 
where the_user = 1 

Похоже, что вы хотите, чтобы показать дружбу, которая идет в обоих направлениях, а не только люди, которые в середине 1 дружит с, но и люди, которые дружат с середины 1. Это должно решить, что ,

Смежные вопросы