结合两个查询:从朋友表中选择朋友并与用户表连接

时间:2012-05-16 17:24:27

标签: php mysql

我有两张桌子 一个用于保存用户信息的用户 另一个是给朋友的

users_table   :  id , username , avatar
friends_table :  id , u1_id , u2_id 

现在我想在他的个人资料中向每个用户朋友展示

我想用一个查询

来做

所以在朋友表中,我的用户可以在u1_id或u2_id中根据谁请求友谊

和becuz我想加入每个朋友到users_table并获取他的用户名和头像我不能简单地做

select * from friends_table where u1_id = $profile_id || u2_id = $profile_id

所以我必须运行两个查询

select f.u1_id , u.username , u.avatar from friends_table f join users_table u on f.u1_id = u.id
where f.u2_id = $profile_id 

select f.u2_id , u.username , u.avatar from friends_table f join users_table u on f.u2_id = u.id
where f.u1_id = $profile_id 

有没有办法用一个查询做到这一点?

或类似的东西

select f.u1_id ,  f.u2_id , u.username , u.avatar from friends_table where u1_id = $profile_id || u2_id = $profile_id

if( u1_id = $profile_id )
join users_table u on f.u2_id = u.id

if( u2_id = $profile_id )
join users_table u on f.u1_id = u.id

我的问题出在加入部分,我想在好友ID上加入boys_table和usres_table,而不是个人资料ID的当前所有者

1 个答案:

答案 0 :(得分:0)

select u.id,
    u.username,
    u.avatar
from friends_table f
join users_table u on f.u1_id = u.id || f.u2_id = u.id
where u.ID <> $profile_id
    and (f.u1_id = $profile_id || f.u2_id = $profile_id)