2011-02-10 14 views
1

私が達成したいのは、私の友人だけが書いたコメントを選択することです。私は以下の表を持っています。複数のテーブルをクエリするには?

友達

id 
my_user_id 
friend_user_id 

コメント

id 
user_id 
comment 

これは私がこれまでやった方法です。

まず友人のテーブルの私の友達である人を見つける:

mysql_query("SELECT friend_user_id FROM friends 
      WHERE my_user_id = $user_id "); 

それから私は私の友人が書いたコメントを選択しました。

mysql_query("SELECT * FROM comments WHERE user_id = 'my_first_friends_id' 
      OR user_id = 'my_second_friends_id' "); 

今、これはラメのバージョンであり、非常に遅いです。コメント表には何百万ものエントリがあります。

この問題の最適な解決策は何ですか? 1つのクエリでこれを解決するにはどうすればよいですか?また、高速であることが非常に重要です。

答えて

3
select c.id, c.user_id, c.comment 
    from Friends f 
     inner join Comments c 
      on f.friend_user_id = c.user_id 
    where f.my_user_id = $user_id 
+0

ありがとう、私は今試してみます。 cとは何ですか?およびf。 ? – Maxxon

+0

@Maxxonこれらはテーブルエイリアスで、各テーブル名を繰り返し入力することなく、それらのテーブルの列を参照できます。 –

+0

friend_user_idとuser_idがbtwであることを確認してください。 cとfはテーブルエイリアスなので、 "Friends"を何度も繰り返し書く必要はありません。 –

関連する問題