搜尋

首頁  >  問答  >  主體

php - mysql連表統計查詢

活動表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怎麼查需要的資料。求大神幫助

天蓬老师天蓬老师2708 天前1184

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-06-24 09:43:26

    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

    回覆
    0
  • 取消回覆