1つのクエリに結合する必要のあるクエリが2つあります。問題は、私がフェッチする必要があるかどうかに応じてwhere句で同じ列を使用していることです。同じ列を使用する2つのカウントを結合するMYSQL
クエリ1
SELECT c.fullname, COUNT(DISTINCT sst.id) AS 'Liczba rozpoczetych szkolen'
FROM mdl_course c
INNER JOIN mdl_scorm s ON s.course = c.id
INNER JOIN mdl_scorm_scoes_track sst ON s.id = sst.scormid
INNER JOIN mdl_user u ON u.id = sst.userid
WHERE sst.element = 'x.start.time' AND u.deleted =0
GROUP BY c.fullname ORDER BY `Liczba rozpoczetych szkolen` ASC
クエリ2
SELECT c.fullname, COUNT(DISTINCT sst.userid) AS 'Liczba_ukonczonych_szkolen'
FROM mdl_course c
INNER JOIN mdl_scorm s ON s.course=c.id
INNER JOIN mdl_scorm_scoes_track sst ON s.id = sst.scormid
INNER JOIN mdl_user u ON sst.userid=u.id
where `element`='cmi.core.score.raw' and `value` = 100 and u.deleted = 0
GROUP BY c.fullname ORDER BY `Liczba_ukonczonych_szkolen` DESC
彼らは '要素' という名前の同じ列に依存しています。私は
fullname Liczba rozpoczetych szkolen Liczba_ukonczonych_szkolen
A1 34 4
A2 5 3
A3 34 33
として結果を表示することができますどのように
は、私はこの1つ、whitch作品を思い付いてきました。おかげでアドバイス@HoneyBadgerため
SELECT t1.fullname, t1.Liczba_rozpoczetych_szkolen, t2.Liczba_ukonczonych_szkolen,
round(((t2.Liczba_ukonczonych_szkolen /t1.Liczba_rozpoczetych_szkolen)*100),2) as procentowo
FROM
(SELECT c.fullname, COUNT(DISTINCT sst.id) AS Liczba_rozpoczetych_szkolen
FROM mdl_course c
INNER JOIN mdl_scorm s ON s.course = c.id
INNER JOIN mdl_scorm_scoes_track sst ON s.id = sst.scormid
INNER JOIN mdl_user u ON u.id = sst.userid
WHERE sst.element = 'x.start.time' AND u.deleted =0
GROUP BY c.fullname) AS t1,
(SELECT c.fullname, COUNT(DISTINCT sst.userid) AS Liczba_ukonczonych_szkolen
FROM mdl_course c
INNER JOIN mdl_scorm s ON s.course=c.id
INNER JOIN mdl_scorm_scoes_track sst ON s.id = sst.scormid
left join mdl_user u ON sst.userid=u.id
where `element`='cmi.core.score.raw' and `value` = 100 and u.deleted = 0
GROUP BY c.fullname) as t2
WHERE t1.fullname = t2.fullname
は 'fullname' – HoneyBadger
@HoneyBadgerに一緒に2つのクエリに参加し、私の編集を確認してください。あなたの考えはこれですか? – Jotosha
あなたのLEFT JOINは、ヌル以外の述語である 'u.deleted = 0'でWHEREに制限されたINNERです。本当ですか? – Serg