php – Statistikabfrage für mit MySQL verbundene Tabelle
天蓬老师
天蓬老师 2017-06-24 09:41:26
0
1
1182

Aktivitätstabellenprobe
id (selbst inkrementierende ID), Name (Aktivitätsname), send_time (Startzeit), UID (Benutzer-ID, die die Aktivität erstellt hat) ...
Statistischer Tabellenstatus
id (selbst inkrementierende ID), mtype (Aktivitätstyp 1, 2, 3; 1 stellt die Aktivität innerhalb der Tabellenprobe dar), sid (Quellen-ID, ID der Aktivitätstabelle), pid (Personen-ID), open_time (Zeitpunkt des Öffnens der E-Mail) ...

Fragen Sie die vom Benutzer mit Benutzer-ID 6 erstellte Aktivitätsliste ab (einschließlich Informationen: Aktivitätsname, Startzeit, Gesamtzahl der E-Mails, Gesamtzahl der geöffneten E-Mails).
open_time>0 ist die Aufzeichnung geöffneter E-Mails, feste Bedingung mtype=1 ,sid = Die aktive Tabellen-ID, die von der Probe bis uid=6 abgefragt wurde.
Jetzt wird die Abfrage separat durchgeführt und anschließend das Array verarbeitet.
Ich weiß nicht, wie ich die erforderlichen Daten in einer SQL überprüfen soll. Bitte Gott um Hilfe

天蓬老师
天蓬老师

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

Antworte allen(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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage