(以下の例は架空のものですが、概念を示しています)。
MySQL を使用して、2 つのテーブルがあるとします。
userFromID userToId moreInfo
1 2 cat
1 3 dog
4 1 bear
3 4 fish
と...
userId someInfo addlInfo
1 m 32
2 f 33
3 m 25
4 f 28
そして、ユーザー ID を照会し、user1 と関係を共有するすべてのユーザーの両方のテーブルから結合された情報を取得したいと考えています。
最初のテーブルに次のようなものがあると仮定すると、alter table thatFirstTable add unique index(userFromId, userToId)
重複はありません.2つのID間の各関係は一意になります.
誰が「from」か「to」かは関係ありません
したがって、ユーザー ID との関係を照会した場合、望ましい結果は次のようになります。
userId moreInfo someInfo addlInfo
2 cat f 33
3 dog m 25
4 bear f 28
ありがとう。
/編集これは「機能します」が、もっと良い方法があると思いますか?
SELECT * FROM users JOIN friends ON friends.userFrom = users.id OR friends.userTo = users.id WHERE users.id != 1 AND friends.userFrom = 1 OR friends.userTo = 1
/EDIT2 - 目標をより適切に反映するようにサンプル出力を更新しました