1

私は現在、さまざまなことを学んでいるので、これを行うために、現在、小さなソーシャルネットワーキングサイトを自分で構築し、そこにたどり着いています。やらなければならないことがいくつか残っていますが、そのうちの 1 つはアクティビティ/ニュース フィード、またはあなたがそれを何と呼びたいかです。プロフィール フィードに自分の投稿を表示するのに十分なほど簡単です。しかし、それがあなた自身の投稿とあなたの友人の投稿になるインデックスページでは、それが私が苦労していることです. まず、私はfriends列を持つテーブルを持っていますuser_one&user_twoそして、もしあなたの番号がそれらの1つにあり、別のユーザーが他の1つにある場合、あなたの友人がいる場合。私が最初に数人の異なるユーザーによって作成された投稿を取得しようとしたクエリは

SELECT * FROM `post`, `friends` WHERE `user_id` = $user_id AND (`friends`.`user_one` = $user_id OR `friends`.`user_two` = $user_id)

これから、投稿 user_id = $_SESSION['user_id'] AND where user_one OR user_two in the friends table = $_SESSION['user_id'] の投稿と友達を選択する必要があります。これは、$_SESSION['user_id'] と同じ行 (friends テーブル内) にある OTHER user_id によって作成された投稿を取得する必要があります ...

しかし、問題は、私が望んでいたように 1 つの投稿だけではなく、繰り返しプルアップするという結果をプルアップすることです。これは、ユーザー 1 とユーザー 2 と 3 が私の友人であるため、二重の結果をプルアップしているという事実によるものだと思います。 ..

私が望むのは、私と私の「友達」によって投稿されたユーザー 1 のアクティビティ フィードに表示する 1 つの結果をプルアップすることです... 誰かがこれを行う最善の方法についてアドバイスできますか? 誰かが私を理解できるなら笑...

乾杯

リチャード

4

1 に答える 1

0

両方のテーブルを結合していないため、重複が発生します。

このクエリを次のように記述します。

SELECT * 
FROM `post`
WHERE EXISTS (SELECT * FROM `friends` 
               WHERE (`friends`.`user_one` = $user_id AND `post`.`user_id` = `friends`.`user_two`)
                OR   (`friends`.`user_two` = $user_id AND `post`.`user_id` = `friends`.`user_one`)
              )
于 2013-05-11T16:57:43.673 に答える