php - mysql連表統計查詢
天蓬老师
天蓬老师 2017-06-24 09:41:26
0
1
1119

活動表rehearse
id(自增id),name(活動名稱),send_time(開始時間),uid(建立活動的使用者id)…
統計表statis
id(自增id),mtype(活動類型1,2,3;1表示表rehearse內的活動),sid(來源id,活動表的id),pid(人員id),open_time(開啟郵件時間)…

查詢用戶id為6的用戶,建立的活動清單(包含資訊:活動名稱,開始時間,總郵件數,總開啟郵件數)
open_time>0即為開啟郵件的記錄,固定條件mtype =1,sid= 透過uid=6從rehearse查詢到的活動表id。
現在是分開查詢的,然後數組處理。
不知道一條sql怎麼查需要的資料。求大神幫助

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(1)
小葫芦
SELECT
    R.name,
    R.send_time,
    COUNT(DISTINCT S1.id) send_times,
    COUNT(DISTINCT S2.id) open_times
FROM rehearse R
LEFT JOIN
    statis S1
ON
    R.id = S1.sid AND S1.mtype = 1
LEFT JOIN
    statis S2
ON
    R.id = S2.sid AND S2.mtype = 1 AND open_time > 0
WHERE
    R.uid = 6
GROUP BY
    R.id

由於左聯了兩次,可能會有效率問題,在找更優方法

Update

方法2:子查詢

SELECT
    R.name,
    R.send_time,
    COUNT(S.id) send_times,
    (SELECT COUNT(S.id) FROM S WHERE AND S.open_time > 0) open_times
FROM
    rehearse R
LEFT JOIN
    (SELECT * FROM statis WHERE mtype = 1 GROUP BY sid, open_time AND sid = R.id) S
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!