第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

PHP MySQL - 獲取一個(gè)用戶撰寫的所有帖子的評(píng)論計(jì)數(shù)

PHP MySQL - 獲取一個(gè)用戶撰寫的所有帖子的評(píng)論計(jì)數(shù)

PHP
慕虎7371278 2023-10-15 15:27:37
我的目標(biāo)是獲取特定用戶所有帖子的“待處理”和“已批準(zhǔn)”評(píng)論總數(shù)。評(píng)論表有一個(gè)“待處理”或“已批準(zhǔn)”狀態(tài)列。作為記錄,comments 表中的 page_id 映射到 posts 表中的 id。我開始寫下面的聲明 - 但我想我已經(jīng)把它放回到前面了: $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();為了使表結(jié)構(gòu)可見,下面是表列。評(píng)論表 帖子表 用戶表我有一個(gè)將用戶id與帖子關(guān)聯(lián)起來的外鍵user_id。我將繼續(xù)嘗試這樣做 - 但是 - 希望獲得一些關(guān)于如何實(shí)現(xiàn)這項(xiàng)工作的指導(dǎo)。編輯:我有一個(gè)供用戶使用的管理面板。我想創(chuàng)建一個(gè)已批準(zhǔn)評(píng)論表,其中已批準(zhǔn)評(píng)論計(jì)數(shù)位于頂部,以及一個(gè)待處理評(píng)論表,其中待處理評(píng)論計(jì)數(shù)位于頂部。每個(gè)表格中都有一個(gè)按鈕可以批準(zhǔn)或取消批準(zhǔn)評(píng)論 - 但僅限于他們的帖子。這是我如何針對(duì)所有評(píng)論執(zhí)行此操作的圖片。
查看完整描述

2 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

SUM使用and似乎是一個(gè)非常簡(jiǎn)單的查詢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'另一個(gè)status = 'pending'單獨(dú)的計(jì)數(shù)相加。


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


查看完整回答
反對(duì) 回復(fù) 2023-10-15
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

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


您需要 COMMENTS.ID 來更新 COMMENTS 中的狀態(tài)。您可以將“COMMENTS.ID 重命名為 COMMENT_ID”,或者僅從 COMMENTS 中進(jìn)行選擇,因?yàn)槟婪祷氐摹癐D”將是 COMMENT.ID


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


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 )

有用的索引:

  • 對(duì) STATUS、PAGE_ID 的評(píng)論

  • USER_ID 上的帖子

假設(shè):

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

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

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


查看完整回答
反對(duì) 回復(fù) 2023-10-15
  • 2 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)