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

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

具有多個(gè) COUNT() 的多個(gè) LEFT JOINS 計(jì)數(shù)所有列

具有多個(gè) COUNT() 的多個(gè) LEFT JOINS 計(jì)數(shù)所有列

PHP
HUWWW 2022-06-11 09:55:57
我有 4 張桌子。表組| ID | NAME |  1    Premium  2    Silver表用戶| ID | group_id | NAME |  1       1      Serhan  2       2      Farhat表 user_statistics| ID | user_id | TYPE |  1       1      1  2       2      0桌票| ID | user_id | VOTE |  1       1      1  2       2      0  3       1      0我創(chuàng)建了一個(gè) sql 查詢來檢索同一組中的用戶詳細(xì)信息。成功了!然后我想檢索任何已投票給用戶的投票。我要數(shù)票。所以基本上我已經(jīng)做了這個(gè) sql 查詢。global $conn;$res_groups = array();$stmt = $conn->prepare("    SELECT * FROM groups");$stmt->execute();$stmt->setFetchMode(PDO::FETCH_ASSOC);while ($group = $stmt->fetch()){    $groups = array();    $groups['id'] = $group['id'];    $groups['name'] = $group['name'];    $user_arr = array();    $stmts = $conn->prepare('        SELECT l.*,        (SELECT MAX(ls.date) from user_statistics ls WHERE ls.user_id = l.id GROUP BY ls.user_id) as ls_date,        (SELECT SUM(IF(ls.type="0", ls.type, 0)) FROM user_statistics ls WHERE ls.user_id = l.id GROUP BY ls.user_id) as ls_us,        (SELECT SUM(IF(ls.type="1", ls.type, 0)) FROM user_statistics ls WHERE ls.user_id = l.id  GROUP BY ls.user_id) as ls_uk,        (SELECT COUNT(*) FROM user_statistics WHERE type="1" AND ls.user_id = l.id GROUP BY ls.user_id) as totals,        (SELECT COUNT(*) FROM votes v WHERE v.vote=0 AND confirm=0 AND v.user_id = l.id) as badvote,        (SELECT COUNT(*) FROM votes v WHERE v.vote=1 AND confirm=0 AND v.user_id = l.id) as goodvote        FROM user l        LEFT JOIN        user_statistics ls on l.id = ls.user_id        LEFT JOIN votes v on v.user_id = l.id        WHERE l.group_id = '.$groups['id'].' AND status = 1        GROUP BY l.id,ls.user_id    ');除非一件事,否則所有代碼似乎都有效。VOTE 始終返回以計(jì)算我的數(shù)據(jù)庫 VOTES 中的所有列并將數(shù)據(jù)應(yīng)用于我的所有用戶。我想要的是根據(jù)投票類型 GOOD 或 BAD 獲得每個(gè)用戶獲得多少票。任何幫助都會(huì)很好。
查看完整描述

1 回答

?
小唯快跑啊

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

查看您的代碼,您可以重構(gòu)查詢,避免為每一行選擇一個(gè)子查詢,并在連接中使用兩個(gè)帶有 group by 的子查詢。


您對(duì)壞票和好票也有相同的代碼可能是您需要不同的代碼來獲得不同的值


    SELECT l.*

      , t1.ls_date

      , t1.ls_us

      , t1.ls_uk

      , t2.totals

      , t2.badvote

      , t2.goodvote

    FROM user l

    INNER JOIN  (

     SELECT ls.user_id

        , MAX(ls.date) ls_date

        , SUM(IF(ls.type="0", ls.type, 0)) ls_us

        , SUM(IF(ls.type="1", ls.type, 0)) ls_uk

     from user_statistics ls 

     GROUP BY ls.user_id 

    )  t1 on t1.user_id = l.id

    LEFT JOIN ( 

        SELECT v.user_id

        , sum( case when type="1" then 1 else 0 end ) totals

        /* these are the same */

        , sum ( case when v.vote=1 AND confirm=0  then 1 else 0 END ) badvote  

        /* these are the same */

        , sum ( case when v.vote=1 AND confirm=0  then 1 else 0 END ) goodvote 

      FROM votes v

    ) t2 ON t2.user_id  = l.id 

    WHERE l.group_id = '.$groups['id'].' 

    AND status = 1

并且您應(yīng)該避免在 SQL 中使用 PHP var(您有 SQL 注入的風(fēng)險(xiǎn))。為此,您應(yīng)該查看您的數(shù)據(jù)庫驅(qū)動(dòng)程序以獲取準(zhǔn)備好的語句和綁定值,或者至少確保您正確清理了 php var 內(nèi)容


查看完整回答
反對(duì) 回復(fù) 2022-06-11
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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