の友人を介して接続されているのであればfriendship_requestテーブルがある判断します両方がお互いにリクエストを送信した場合2人のユーザが友人
+--------+----------+
| sender | receiver |
+--------+----------+
| 1 | 2 |
| 2 | 1 |
+--------+----------+
2人のユーザーが友達です。
PHPのarray_intersectを各ユーザーのすべての友人を含む配列で使用して、友人の友達で接続されているかどうかを判断しています。 2人のユーザーがお互いに友達である友人を持っている友人がいる場合は見つけるための最も効率的な方法は何
すなわち
1 <--> 2 <--> 3
。 すなわち
+--------+----------+
| sender | receiver |
+--------+----------+
| 1 | 2 |
| 2 | 1 |
| 2 | 3 |
| 3 | 2 |
| 3 | 4 |
| 4 | 3 |
+--------+----------+
1 <--> 2 <--> 3 <--> 4
ユーザー1がユーザーとの彼の関係を知っている必要があります。4.
PS:これは、PHP /擬似コードやMySQL
編集で大丈夫です:私は別のテーブルを作成する必要はありませんか再生回数上記のリソースを使用して最適なソリューションを得たいと考えています。
可能な重複:-)動作するはず[リレーショナルデータベースの階層データを格納するためのオプションは何ですか?](https://stackoverflow.com/questions/4048151 /関連するデータベースの階層化データのためのオプションとなるもの) – philipxy
これはよくある質問です。 Googleのリレーショナル/ SQLデータ/テーブル/階層/ツリーのクエリ。あなたの質問の多くの簡潔な明確なステートメントのためにGoogleのstackoverflowを尋ねる前に常にください。 PSを「効率的」とは意味しません。別の言い方をすれば、あなたはそれを使用しました、あなたはそれを意味しますか? – philipxy
私はノードを持つテーブルを望んでいません... –