加入多个SQL查询以显示在线好友列表?

时间:2013-05-13 02:15:10

标签: php sql mysqli

我正在尝试将3个表连接在一起,以显示从表users中获取的表subscribers的列表,仅显示其IP =表online中的IP。

subscribers table :(不允许重复,type告诉其他用户是否订阅了。)

sender  recipient
1       5     
5       3 

users表:

id  loginip
1   192.168.0.1
3   192.168.0.2
5   192.168.0.3

online表:

ip
192.168.0.1
192.168.0.2
192.168.0.5

因此,查询应抓取id,找到loginip的{​​{1}},然后扫描id表并返回在线用户:(假设UserID = 5)

online

如果user = 5,我还需要找出一种切割IP的方法,因此它不会显示在列表中。在你们其中一个好人帮助我之后,我自己可以做到这一点。 :)

我的尝试虽然很差:

sender  recipient  send_ip       reci_ip
5       3          192.168.0.3   192.168.0.2
1       5          192.168.0.1   192.168.0.3

谢谢。

更新:我一定很累,因为它突然起作用了?我很抱歉。

1 个答案:

答案 0 :(得分:0)

问题中包含正确的答案。我发帖只是为了让问题看起来没有答案。

SELECT  f.sender as friend1,
    f.recipient as friend2,
    u1.loginip ip1,
    u2.loginip ip2
FROM subscribers f
INNER JOIN users u1 ON u1.id = f.sender
INNER JOIN users u2 ON u2.id = f.recipient
INNER JOIN online o1 ON o1.ip = u1.loginip
INNER JOIN online o2 ON o2.ip = u2.loginip
WHERE 
    f.sender = 5 OR 
    f.recipient = 5;