4.解決多表連接中(左連和等值)因添加新的報表導致查詢結果有問題的方法

需求及解決辦法如下:

SELECT
		a.id AS id,
		c.sdate AS sdate,
		a. NAME AS NAME,
		ifnull(sum(c.xzuser),0) AS totalxz,
		ifnull(sum(c.tcount),0) AS totaljs,
		ifnull(sum(c.jsuser),0) AS
		totaluseable,
		ifnull(sum(c.duliuser),0) AS totaldl,
		ifnull(sum(c.imeiuser),0) AS totalimei,
		ifnull(sum(c.noimsiuser),0) AS totalnoimsi
		FROM
		tb_customercorp a
		INNER JOIN
		tb_customerapp
		b ON a.id = b.channelid
		INNER JOIN(
		SELECT
		usc.channelid AS
		appid,
		usc.sdate AS sdate,
		v_uj.tcount AS tcount,
		tuc.usercount AS jsuser,
		tuic.usercount AS duliuser,
		usc.usercount AS xzuser,
		(select uic.usercount from tb_userstat_imei_channelid as uic where uic.channelid = usc.channelid and uic.sdate = usc.sdate) as imeiuser,
		(select uiic.usercount from tb_userstat_imeiimsi_channelid as uiic where uiic.channelid = usc.channelid and uiic.sdate = usc.sdate) as noimsiuser
		FROM
		tb_userstat_channelid
		AS usc
		LEFT JOIN
		tb_userjs_channelid
		as tuc
		ON usc.channelid = tuc.channelid
		AND
		usc.sdate = tuc.sdate
		LEFT JOIN 
		tb_userimsi_channelid
		as tuic
		ON tuc.sdate = tuic.sdate
		AND
		tuc.channelid = tuic.channelid
		left join 
		(
		SELECT
		`uj`.`appid` AS `appid`,
		`uj`.`sdate` AS
		`sdate`,
		sum(`uj`.`usercount`)AS `tcount`
		FROM
		`tb_userlog_jsok` `uj`
		WHERE
		uj.grade > 0
		GROUP BY
		`uj`.`appid`,
		`uj`.`sdate`
		having
		uj.sdate BETWEEN '20160101' and '20160103'
					
	
		)AS v_uj on v_uj.appid = tuc.channelid and v_uj.sdate = tuc.sdate 
		where
					usc.sdate BETWEEN '20160101' and '20160103'
			
		)c ON
		b.id = c.appid
		
		GROUP BY a.id,c.sdate
		ORDER BY c.sdate DESC



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章