2017-05-27 20 views
0

我對帖子功能發表了最新評論。因此,當帖子被評論時,它會跳轉到頂部。 我想知道如何在首次調用中將其所有帖子按其streamitem_id.分組,然後在每次調用之後進行分組。所以如果一個帖子匹配在第四次滾動與第二次滾動中的一個我想不顯示,因爲我寧願它被分組在一起以無限滾動方式對所有結果進行分組

我在下面的查詢中嘗試了GROUP方法,它只是分組因爲它發出新的呼叫,所以每一個新的滾動項目

$query = "SELECT * 
    FROM streamdata m 
    JOIN streamdata_comments t1 
    WHERE"; 
    if ($last_id!==0) { 
    $query .= " t1.comment_id < $last_id AND"; 
    } 
    $query .= " t1.comment_streamitem=m.streamitem_id 
    GROUP BY m.streamitem_id 
    ORDER BY t1.comment_id DESC LIMIT 2"; 
    $result = mysqli_query($mysqli, $query) or die('Error: ' . 
    mysqli_error($mysqli)); 

UPDATE 我曾嘗試以下,並越來越接近我需要什麼。它分組的項目..但現在它扔在一個隨機的帖子,甚至不應該在那裏。 $query = " SELECT * FROM streamdata_comments t1 JOIN streamdata m ON"; if ($last_id!==0) { $query .= " t1.comment_id < $last_id GROUP BY t1.comment_streamitem AND"; } $query .= " m.streamitem_id=t1.comment_streamitem AND t1.comment_poster=34 AND comment_type_id=1 ORDER BY t1.comment_id DESC LIMIT 2"; $result = mysqli_query($mysqli, $query) or die('Error: ' . mysqli_error($mysqli));

+0

不包括ON的加入,變換加入到'跨join' – Manatax

+0

ON m.streamitem_id = t1.comment_streamitem WHERE t1.comment_id <$ last_id – Manatax

+0

另外,如果你想忽略某些post_ids,然後我建議您將它們作爲請求的一部分發送 – Manatax

回答

0

如果ID「2342」是第三個結果的ID,「2222」是第二個結果的ID,那麼它聽起來像您的ID不是遞增值,或者您的排序子句有問題。最新的評論應該是最高的價值。我會確保您的查詢以「t1.comment_id」值的降序返回結果。如果ID實際上不是遞增值,或者排序子句無效,則此行無效。

$query .= " t1.comment_id < $last_id AND"; 

如果上述沒有得到你任何進一步的一對夫婦的其他東西來驗證將是$ last_id實際上是在以前的ID,所以在第二次請求$ last_id確實應該是「2222」的當前查詢。

另一種可能性我可能是錯誤的,但JOIN的這一行可能在錯誤的地方,它似乎是WHERE子句的一部分。也許是移動了JOIN可能會幫助後:

$query .= " t1.comment_streamitem=m.streamitem_id 

如果沒有這些爲準我建議提供的設計或者是查詢和響應的轉儲更多信息。

+0

我認爲你在點JOIN – Manatax

+0

@chaduhduh我很困惑你的迴應。我的結果正確顯示。我詢問了如何將相同的帖子分組爲相同的ID,因此如果在最初的調用中對2345的帖子發表了評論,則第四行中的第四評論將不會顯示爲具有相同ID 2345的第四個結果顯示在第一個電話中。 – Gateway

+0

所以在頁面加載2345(最後評論的帖子ID)2222(在2345之前評論)然後滾動表2342中的下兩個結果(是第三個評論的項目),然後是2345(再次顯示,因爲這是第四評論項目,但不應該因爲它應該在頁面加載時與最初的2345帖子(前兩個結果)配對。 – Gateway