请教各位大侠,我有一张userinfo(uid,uname,uage)表和用户之间的关系表userfollow(foid,uid<关注者uid>,fid<被关注者uid>)表,有四种关系(无联系,只关注,只被关注,相互关注),现在根据usernanme字段模糊查询userinfo表,我现在需要得到的是查询出来的数据要和当前登陆用户是是属于哪种关系。我之前想写出四种关系的sql语句,然后根据查询的数据uid和当前用户的uid在表中userfollow进行判断,然后定义一个标志位,可是数据量过大的或是并发访问的话,数据库效能特别低,有没有其他方法。还有可能会写存储过程,但是我不会写,愿高手教我!!!!!!
注:四种关系 主要体现在userfollow表中,譬如userinfo表中有
uid uname uage
1   aa    20
2   bb    21
3   cc    21
4   dd    23
5   ee    22
foid  uid  fid
1     1    2
2     2    1
3     3    1
4     1    4
这样 1与2的关系是相互关注,1与3的关系是1只被3关注,1与4的关系就是只关注,1与5就是无联系

解决方案 »

  1.   

    我想要的结果就是根据uname模糊查询user表得到的
    uid uname uage uattention(这个用户和当前登录用户的uid的关系)
    这个结果集 
      

  2.   

    --无关注
    select A.* from userinfo A where not exists(select top 1 1 from userfollow B where A.uid=B.uid or A.uid=B.fid)
    --只被关注
    select A.uid,B.uid from userinfo A inner join userfollow B on A.uid=B.fid;
    --只关注
    select A.uid,B.fid from userinfo A inner join userfollow B on A.uid=B.uid;
    --相互关注
    select A.* from userfollow A inner join userfollow B on A.uid=B.fid and A.fid=B.uid