2011-06-07 76 views
0

比方說,有10個職位,而我已經派人到職位的7響應。當其他用戶發送回覆帖子時,系統必須檢查並告訴我是否有任何帖子收到新回覆。系統不會檢查其他3個帖子,它會檢查我僅回覆的7個帖子。如何檢查用戶之前回復的帖子是否收到新回覆?

第1步 - SELECT post-id FROM responsesLive WHERE username='{$myUsername}'; //這會輸出很多重複的-ID後,如果我發送多個響應到特定職位。如何防止重複的後ID?

第2步 - 我得到這個職位的編號,7後,我需要在每個7個帖子的最後響應響應ID。我是否需要使用數組來存儲7個後ID?或者,我只需要編寫,而像以前的查詢循環中此查詢:

$query3 = "SELECT id FROM responseslive WHERE username='{$myUsername}'"; 
$result3 = mysql_query($query3,$connection) or die (mysql_error()); 
confirm_query($result3); 
while($postinfo = mysql_fetch_array($result3)){ 
    $post-id= $postinfo['post-id']; 

    $query4 = "SELECT rsp-id FROM responseslive WHERE postid='{$post-id}' ORDER BY rsp-id DESC LIMIT 1"; 
    $result4 = mysql_query($query4,$connection) or die (mysql_error()); 
    confirm_query($result3); 
    while($rspinfo = mysql_fetch_array($result4)){ 
     $last-rsp-id= $rspinfo['rsp-id']; 
    } 

} 

第3步 - 當時的$last-post-id比較以前$last-post-id,如果目前的$last-post-id比以前$last-post-id大,然後告訴用戶有他之前回復的帖子上的新回覆。

回答

1

對於步驟1:

SELECT DISTINCT post-id FROM responsesLive WHERE username='{$myUsername}'; 

這將只返回不同的IDS交。

對於第2步:

SELECT 
    postid, max(rsp-id) 
FROM 
    responseslive 
WHERE postid in (
    SELECT DISTINCT post-id FROM responsesLive WHERE username='{$myUsername}'); 
GROUP BY 
    postid 

這會給你和陣列的帖子ID和他們最後的答覆的ID。

+0

哇,看起來非常簡單,漂亮的編碼。非常感謝。 – zac1987 2011-06-07 15:54:23

+0

如果我刪除「GROUP BY postid」,可以嗎?人們說當你有或者可以使用GROUP BY不要使用DISTINCT,因爲它會減慢查詢... HTTP:如果你想刪除「GROUP BY帖子ID」 //forge.mysql.com/wiki/Top10SQLPerformanceTips – zac1987 2011-07-05 03:18:19

+0

那麼你將不得不從SELECT刪除postid。取決於您的結果中是否需要此字段。 – CristiC 2011-07-05 08:07:05

相關問題