首先,我想说,我不善于解释技术问题,但我会尝试:)
我正在尝试像facebook墙那样做。我有4张桌子。
我想在他/她的主页上显示用户的朋友帖子。我搜索并找到了一些解决方案并应用于我的应用程序。但我正在尝试寻找SQL查询的替代方法。因为我使用了子查询,也许这可以不用这个。
这是数据库:http://sqlfiddle.com/#!2/bbacd
获取结果的SQL代码:
SELECT DISTINCT share.*, member.*, picture.file
FROM friend
LEFT JOIN share ON share.wall_owner_id = friend.friend_id
LEFT JOIN picture ON picture.member_id = share.wall_owner_id
LEFT JOIN member ON member.member_id = share.wall_owner_id
WHERE friend_id IN (SELECT friend_id FROM friend WHERE member_id = 'MEMBER.ID')
OR share.writed_by_id = 'MEMBER.ID'
MEMBER.ID =登录用户的ID。
友谊设计作为交叉系统工作。 如果有人接受朋友请求(表没有添加到sqlfiddle),两者都是像2,8和8那样的朋友写入数据库。这样做的好方法吗?
非常感谢。
友好。
答案 0 :(得分:0)
如果没有额外的加入,你绝对可以做到这一点。仍然不确定我是否正确的要求。如果你想看到他的朋友或他在任何一面墙上发布的所有内容,这种查询应该有效。基本上,您只需选择那些以MEMBER.ID为朋友或自己为MEMBER.ID的人。
SELECT DISTINCT share.share_id, share.status_text
FROM friend
JOIN share ON share.writed_by_id = friend.member_id
JOIN picture ON picture.member_id = share.wall_owner_id
WHERE friend.friend_id = 2 OR friend.member_id = 2