Facebookのようなウォールポストスクリプトを作成しようとしています
ニュースフィード領域には、現在のユーザーと友人からの投稿が表示されます。
私は3つのテーブルを使用しています:
ユーザー: ユーザー ID、ユーザー名、fname、lname、性別、電子メール。
投稿: post_id、ユーザー名、投稿者、タイトル、タイプ。
友達: ID、user1、user2。
ユーザーが別のユーザーを追加すると、両方がフレンド テーブルに追加されます。
私はmysqlビューを使用して一時テーブルを作成し、現在のユーザーのすべての友達を次のステートメントで保存しています:
$friends = "CREATE VIEW ".mysql_real_escape_string($_SESSION['username'])." AS
SELECT users.username "."FROM users, friends "."
WHERE ((users.username = friends.user1 OR users.username = friends.user2) AND
(users.username != '".mysql_real_escape_string($_SESSION['username'])."')) AND
(friends.user1 = '".mysql_real_escape_string($_SESSION['username'])."' OR
friends.user2 = '".mysql_real_escape_string($_SESSION['username'])."')";
mysql_query($friends) or die(mysql_error());
以下のステートメントを使用して、ページに投稿を表示しています。
$query = "SELECT posts.*, user.fname, user.lname, user.username "."FROM
posts, users, ".mysql_real_escape_string($_SESSION['username'])." "."
WHERE
(users.username = ".mysql_real_escape_string($_SESSION['username']) ".username
AND users.username = posts.username) OR
(users.username = '".mysql_real_escape_string($_SESSION['username'])."' AND
users.username = posts.username)
ORDER BY posts.post_id DESC LIMIT 0, 11";
問題は、友達の投稿が問題なく表示されることです。ただし、現在のユーザーからの投稿は、友人ごとに 1 回繰り返されます。
つまり、友達が 5 人いる場合、私の投稿はそれぞれ 5 回表示されます。
このクエリの何が問題なのかを教えてください。これを行うためのより良い方法があれば投稿してください。