以下の表があります。
user
+-----------------------------------------------+
| user_id | username | Password | ... |
+-----------------------------------------------+
| 1 | a | *** | ... |
+-----------------------------------------------+
| 2 | b | *** | ... |
+-----------------------------------------------+
| 3 | c | *** | ... |
+-----------------------------------------------+
| 4 | d | *** | ... |
+-----------------------------------------------+
| 5 | e | *** | ... |
+-----------------------------------------------+
friends
+-----------------------------------------------+
| f_id | user_id | friend_id | ... |
+-----------------------------------------------+
| 1 | 4 | 2 | ... |
+-----------------------------------------------+
| 2 | 4 | 1 | ... |
+-----------------------------------------------+
| 3 | 4 | 5 | ... |
+-----------------------------------------------+
| 4 | 4 | 3 | ... |
+-----------------------------------------------+
友達として追加できるすべてのユーザーを取得したい(この場合、のuser_id
に1
はさらに3人の友達を追加する必要があります(2, 3, 5)
。ただし、以下を使用すると、追加できるSQL statement below
ユーザーは1人だけになります。(4)
$sql = "SELECT * FROM user WHERE user.user_id NOT IN
(SELECT friends.friend_id FROM friends) AND
user.user_id <> $_SESSION['id']." ORDER BY RAND() LIMIT 5";
しかし、これは、追加できるユーザーがいないユーザー4としてログインしたときにうまく機能します。これは私には少し注意が必要です。どんなアイデアでも大歓迎です。
ありがとう