亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP MySQL - 獲取一個用戶撰寫的所有帖子的評論計數

PHP MySQL - 獲取一個用戶撰寫的所有帖子的評論計數

PHP
慕虎7371278 2023-10-15 15:27:37
我的目標是獲取特定用戶所有帖子的“待處理”和“已批準”評論總數。評論表有一個“待處理”或“已批準”狀態列。作為記錄,comments 表中的 page_id 映射到 posts 表中的 id。我開始寫下面的聲明 - 但我想我已經把它放回到前面了: $sql = 'SELECT * FROM posts JOIN comments on posts.id = comments.page_id WHERE author = posts.author'; $stmt = $pdo->prepare($sql); $stmt->execute(); $results = $stmt->fetch();為了使表結構可見,下面是表列。評論表 帖子表 用戶表我有一個將用戶id與帖子關聯起來的外鍵user_id。我將繼續嘗試這樣做 - 但是 - 希望獲得一些關于如何實現這項工作的指導。編輯:我有一個供用戶使用的管理面板。我想創建一個已批準評論表,其中已批準評論計數位于頂部,以及一個待處理評論表,其中待處理評論計數位于頂部。每個表格中都有一個按鈕可以批準或取消批準評論 - 但僅限于他們的帖子。這是我如何針對所有評論執行此操作的圖片。
查看完整描述

2 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

SUM使用and似乎是一個非常簡單的查詢CASE


SELECT

  COALESCE(SUM(CASE WHEN c.status = 'approved' THEN 1 ELSE 0 END), 0) AS approvedCount,

  COALESCE(SUM(CASE WHEN c.status = 'pending' THEN 1 ELSE 0 END), 0) AS pendingCount

FROM comments c

INNER JOIN posts p

  ON c.page_id = p.id

WHERE p.user_id = :user_id

該查詢的主要作用是將所有行comments與status = 'approved'另一個status = 'pending'單獨的計數相加。


當您要查找的記錄沒有匹配記錄時,這些COALESCE功能可以滿足您的需求。user_id如果不使用它們,結果將null不是0。


查看完整回答
反對 回復 2023-10-15
?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

對于填充每個頁面的問題的第一部分,您可以通過在包含兩個表的內部聯接上使用“SELECT * FROM”從 POSTS 檢索 ID 并從 COMMENTS 檢索 ID。在這種情況下,將返回 POSTS 和 COMMENTS 中具有相同名稱(id、img)的列,并且結果將不明確,即在 PHP 代碼中,當您請求 $row->id 時,它是 POSTS.ID 還是評論.ID?


您需要 COMMENTS.ID 來更新 COMMENTS 中的狀態。您可以將“COMMENTS.ID 重命名為 COMMENT_ID”,或者僅從 COMMENTS 中進行選擇,因為您知道返回的“ID”將是 COMMENT.ID


由于您只需要結果中來自 COMMENTS 的行,因此我只會從 COMMENTS 中進行選擇,并使用子查詢通過 POSTS 而不是聯接來約束它,并且還進一步將 SELECT 限制為您的結果明確需要的列列表,以便您不必為返回不需要的列付費,例如


SELECT C.ID, C.NAME, C.CONTENT, C.VOTES C.STATUS /* but you know that STATUS already, heheh */

FROM COMMENTS C WHERE 

  C.STATUS = :STATUS AND

  C.PAGE_ID IN ( SELECT P.ID FROM POSTS P WHERE P.USER_ID = :USER )

有用的索引:

  • 對 STATUS、PAGE_ID 的評論

  • USER_ID 上的帖子

假設:

  • COMMENTS.PAGE_ID --> POSTS.ID 外鍵依賴。

  • POSTS.ID 和 COMMENTS.ID 是唯一的。

  • 您不會返回太多需要分頁的行...限制查詢需要不同的方法。


查看完整回答
反對 回復 2023-10-15
  • 2 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號