加入多个SQL查询以显示在线朋友列表?
问题描述:
我正试图将3个表连接在一起,以显示表users
的表格列表,其中表仅在其IP =表online
中的IP。加入多个SQL查询以显示在线朋友列表?
subscribers
表:(不允许重复,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
的id
了的,然后扫描online
表并返回在线用户(假设用户名= 5)
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
我还需要找出一种方法来削减IP如果用户= 5,所以它不会显示在列表中。我可以自己做到这一点,在你们其中一个好人帮助我一点点。 :)
我的尝试,虽然很差:
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;
谢谢。
更新:我一定很累,因为它突然有效?我很抱歉。
答
问题中包含正确的答案。我发布它只是为了使问题看起来没有被回答。
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;
你有什么计划使用多个IP的或使用多人 – 2013-05-13 02:18:30
他们的IP更新,因为它们记录在单个IP的人做的,闲置15分钟后,网上行删除。我稍后将添加一个标识符来解决这些问题。 – user2376117 2013-05-13 02:22:36
查询中缺少什么?它有什么问题吗? – 2013-05-13 02:23:22