3 つのテーブルを結合して、テーブルusers
から取得したテーブルのリストを表示しようとしていますsubscribers
が、その IP はテーブル内の IPonline
です。
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
オンライン ユーザーを返す必要があります (UserID = 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
また、ユーザー = 5 の場合に IP をカットして、自分自身がリストに表示されないようにする方法も考え出す必要があります。あなたの素晴らしい人たちの一人が私を少し助けてくれた後、私はおそらく自分でそれを行うことができます. :)
私の試みは、非常に貧弱ですが:
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;
ありがとうございました。
更新:突然機能するので、とても疲れているに違いありませんか?ごめんなさい。