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、14 和 17 的评论,而不是只显示成员 10 的评论。像这样:

        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 comments 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 回答