2012-08-15 60 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