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

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

MySQL JOIN 2 個表并分別獲得兩個表的總和

MySQL JOIN 2 個表并分別獲得兩個表的總和

PHP
繁華開滿天機 2021-10-22 14:22:29
我有2張桌子。我需要從兩個表中獲取收入 - 具有相同日期和相同 user_id 的總收入(輸出在圖表中 - 每個用戶的儀表板)。我創(chuàng)建了一個運行良好的 SQL 查詢,但是從第二個表中我從所有用戶那里獲得收入,我只需要分別顯示每個用戶的收入,并且表中是否存在帶有日期的 user_id。我想提一下,每個用戶在 2 個表中都沒有行,只有使用此服務的用戶。見下文:表:user_revenueUSER_ID                CDATE             REVENUE1                      2019-03-15        152                      2019-03-15        185                      2019-03-15        299                      2019-03-15        11表:user_revenue_publisherUSER_ID                CDATE             REVENUE1                      2019-03-15        151                      2019-03-15        509                      2019-03-15        219                      2019-03-15        18我的 SQL 查詢:SELECT  a.user_id,        a.cdate,        a.revenue,        SUM(b.revenue) as total_revenueFROM    user_revenue a           INNER JOIN user_revenue_publisher b                ON a.cdate = b.cdateWHERE   a.user_id=$id AND a.cdate >= DATE(NOW() - INTERVAL 30 DAY) group by cdate asc($id = is ID user after login)我需要將這些查詢合并為一個:$result = $pdo->query("select * from user_revenue where user_id=$id AND `cdate` >= DATE(NOW() - INTERVAL 30 DAY)"); $result2 = $pdo->query("select * from user_revenue_publisher where user_id=$id AND `cdate` >= DATE(NOW() - INTERVAL 30 DAY)"); 我錯誤的 SQL:USER_ID                CDATE             REVENUE1                      2019-03-15        80 (correct)USER_ID                CDATE             REVENUE2                      2019-03-15        104 (BAD value, I need sum = 18)我需要結果:USER_ID                CDATE             REVENUE1                      2019-03-15        80USER_ID                CDATE             REVENUE2                      2019-03-15        18對于新用戶 eg.USER_ID = 24 這是新注冊的應該是USER_ID                CDATE             REVENUE24                     2019-03-15        0我很高興得到任何幫助。
查看完整描述

2 回答

?
紅糖糍粑

TA貢獻1815條經(jīng)驗 獲得超6個贊

如果您想要沒有收入的用戶,那么您需要一個外連接(或相關子查詢)。所以,我建議:


select ur.user_id, ur.cdate, ur.revenue,

       ur.revenue + coalesce(sum(urp.revenue), 0) as total_revenue

from user_revenue ur left join

     user_revenue_publisher urp

     on urp.cdate = ur.cdate and

        urp.user_id = ur.user_id

where ur.user_id = ? and

      ur.cdate >= curdate() - interval 30 day

 group by ur.user_id, ur.cdate, ur.revenue;

筆記:

  • = $id表明您正在使用文字值修改查詢字符串。的?手段-使用的參數(shù)。

  • 使用有意義的表別名,這樣查詢更容易遵循。

  • 您需要left join將所有行保留在第一個表中,即使第二個表中沒有行。

  • 因此,您需要處理NULL可能產(chǎn)生的值。


查看完整回答
反對 回復 2021-10-22
?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

有幾個問題: GROUP BY 需要所有不是聚合函數(shù)的列(如SUM(). 此外,您REVENUE在查詢中顯示兩列,但在示例中只顯示一列,因此很難判斷哪一列是問題(雖然我認為它是 sum())。


我認為這應該給你你想要的:


   SELECT  a.user_id,

        a.cdate,

        a.revenue,

        SUM(b.revenue) AS total_revenue

           FROM    user_revenue a

           INNER JOIN user_revenue_publisher b

                 ON a.cdate = b.cdate

        WHERE a.user_id= $id  group by a.User_ID,a.revenue, a.cdate


查看完整回答
反對 回復 2021-10-22
  • 2 回答
  • 0 關注
  • 423 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號