私は、userIDとfriendID(別のユーザ)をリンクして、彼らが友達だと言うテーブルを持っています。ユーザ1が彼らの友人のようなユーザ24を追加した場合、ユーザ10は彼らの友人等のユーザ1を加算する場合 、以下の表の最初の行は、以下の表の2行目があっても、そこからMySQLテーブルの結合
が起こる が起こるユーザー1は両側にあり、隣接IDの友人です。
FRIENDS TABLE:
userID | friendID
-----------------
1 | 24
10 | 1
私が今必要とするのは、ユーザー1がログインしている場合、友達であるユーザーを表示する必要があります。私が書いてきたこのクエリは:
SELECT DISTINCT (Users.username), friends.userID, friends.friendID FROM Users, friends WHERE Users.userID IN(SELECT userID FROM friends WHERE Users.userID = friends.userID) OR Users.userID IN(SELECT DISTINCT(userID) FROM friends WHERE Users.userID = friends.friendID)
取り戻すだろう:
username | userID | friendID
-----------------------------
name1 | 10 | 1
name1 | 1 | 24
name2 | 10 | 1
name2 | 1 | 24
NAME1 = ID 1 NAME2 = ID 10
は、私はユーザーのログイン取得できる方法はありますuserIDまたはfriendID列に表示されているかどうか(たとえば、ID#1がログインしている場合)この場合、ID#1とリンクされているのでID 24とID 10を検索し、表示にはID#1をリストから削除します。
これは意味があり、あらかじめありがとうと思います!
id'からは、まだ可能性が高いので、SELECT DISTINCTでそれをラップすることになるでしょう重複することはありません。 – Brad
@ブラッド、コメントのおかげで、UNIONは自動的に重複する行を削除します。 –
ああ、私はそれを実現したことはありません!情報ありがとう – Brad