我正在尝试将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
谢谢。
更新:我一定很累,因为它突然起作用了?我很抱歉。
答案 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;