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)生的值。

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
- 2 回答
- 0 關注
- 423 瀏覽
添加回答
舉報