1

この質問は、WHERE句の値の範囲を使用してテーブルから複数の行を選択する方法です。これが私がやろうとしていることです。

Facebookの壁のように、コメントを投稿して友達が返信できるコメントアプリケーションがあります。そして、同じアプリケーションで、各メンバーが互いに友達になることを許可します。

今の私の挑戦は、オーナーのコメントだけでなく、友達にも見せたいということです。Facebookの壁と同じような機能が欲しいです。
だからここに私が持っているものがあります:

    Friends Table                           Commenting Table
 _______________________        ___________________________________________
| member_id | friend_id |      | member_id |           comment             |
 -----------------------        -------------------------------------------
|    10     |    14     |      |    10     |      Hello member # 14        |
|    14     |    10     |      |    14     |      hey how are you          |
|    17     |    9      |      |    17     |      Hello world              |
|    17     |    10     |      |    10     |      Hello                    |
 ------------------------       --------------------------------------------

したがって、メンバー10はメンバー14および17と友達です。そして、メンバー10のコメントを表示するだけでなく、メンバー10、14、および17のコメントを表示したいと思います。

        Member Comments                          All Member Comments
 _______________________________        ___________________________________________
| member_id |      comment      |      | member_id |           comment             |
 -------------------------------        -------------------------------------------
|    10     | Hello member # 14 |      |    10     |      Hello member #           |
|    10     |       Hello       |      |    14     |      hey how are you          |
---------------------------------      |    17     |      Hello world              |
                                       |    10     |      Hello                    |
                                       --------------------------------------------

だから私はmysql_query("SELECTコメントCommenting TableWHERE member_id= '10' ORDER BY member_id DESC")を試し、たくさんのwhileループを実行しましたが、それはあまり効率的ではありません。複数の値を使用してコメントを選択する他の方法はありますか?

4

2 に答える 2

0
SELECT *
FROM `Commenting Table`
WHERE member_id=10
OR member id IN (
  SELECT friend_id FROM `Friends Table` WHERE member_id=10
-- Uncomment the following if your Friends Table is asymetrical
--  UNION
--  SELECT member_id FROM `Friends Table` WHERE friend_id=10
)
于 2012-06-12T19:10:07.877 に答える
0

友達のIDとメンバーのIDでテーブルを結合し、その後、メンバーIDでグループ化できます。

SELECT f.member_id AS user, c.member_id AS commentBy, c.comment AS comment
FROM commentingTable AS c, friendsTable AS f
WHERE c.member_id = f.member_id 
  OR c.member_id = f.friend_id
GROUP BY f.member_id
于 2012-06-12T19:11:13.257 に答える