2012-08-15 63 views
0

我想在PHP/MySQL中创建一个社交网站。我目前正在开发状态更新和对状态系统的评论。我试图展示我的所有状态并评论某些状态。为了做到这一点,我有两个表格:commentuser_status从加入的MySQL查询中选择一行

我已经使用这个MySQL查询,

 SELECT * FROM user_status LEFT JOIN 
     comment ON id_status = comment.status_id 
     WHERE sender_id = '$id2' 
     OR receive_id = '$id2' 

    /* $id2 is my id */ 

我已经成功地显示状态和一个评论。但问题是,如果评论数量超过一个,则状态显示不止一次。将显示多少相同的状态取决于对某些状态有多少评论。但是我希望能够只显示一次相同的状态,并在特定状态下显示多个注释(如果可用)。

+0

@Mushfiqul。如果您只是对状态表列感兴趣,那么请尝试修改您的查询:'SELECT DISTINCT user_status。* ...'。 – halfer 2012-08-15 11:28:20

+1

(另外,请接受[这个问题]上的答案(http://stackoverflow.com/q/9946565/472495) - 有人已经链接到如何为你做的指示。) – halfer 2012-08-15 11:30:07

回答

2

这不是一个PHP问题,因为它是关于SQL如何工作的混淆。

听起来好像你真正想要的不是一个联结,而是来自两个表的一组不同的记录。直到你的SQL skils开发多一点,考虑简化的事情做两个查询 - 每一个评论和user_status。也可以考虑只请求您感兴趣的特定字段,而不是使用SELECT *

Here is a visual explanation of different SQL joins,以防你想用一个查询来追求这个。

0

我假设你没有显示查询的原始结果,而是将它们管道显示到一个html页面。仅显示文本框中的最新状态。然后显示精简的表格或列出评论的有序列表。

您的查询是正确的。

+0

我的php代码如下.. .. '$查询=请求mysql_query( “SELECT * FROM user_status LEFT JOIN ON id_status = comment.status_id WHERE SENDER_ID = '$ ID2' OR receive_id = '$ ID2' 评论”); while($ r = mysql_fetch_array($ query)){ echo $ r ['status']; echo“
”。$ r ['comment']; } ' – 2012-08-15 13:20:49