У меня есть эти таблицы:MYSQL присоединение 3 таблицы с левой присоединиться к
pupils: (id_pupil, name, surname, email, user, pass, level, class)
incidents: (id_incidents, date, time, type_incident, comments, id_pupil, id_user, subject, id_trimester)
qualifications: (id_qualification, qualification, date, time, subject, id_pupil, id_user, id_trimester, type_qualification)
и я сделал этот запрос:
SELECT
pupils.id_pupil
, name
, surname
, round(avg(qualifications.calificacion),2) as average
, count(qualifications.calificacion) as count
, COALESCE(sum(type_incident='miss' and level=1 and class='A' and id_trimester=1),0) as misses
, COALESCE(sum(type_incident='delay' and level=1 and class='A' and id_trimester=1),0) as delays
, COALESCE(sum(type_incident='attitude' and level=1 and class='A' and id_trimester=1),0) as attitude
, COALESCE(sum(type_incident='miss_justif' and level=1 and class='A' and id_trimester=1),0) as misses_justificadas
FROM
pupils
left join incidents ON incidents.id_pupil=pupils.id_pupil
left join qualifications ON qualifications.id_pupil=pupils.id_pupil
WHERE
level=1
and class='A'
and id_trimester=1
and type_qualification='class'
and qualifications.id_trimester=incidents.id_trimester
GROUP BY id_pupil
Но проблема в том, правильный результат я бы получить было бы быть:
И я получаю:
Проблема заключается в том, что мультипликативный число классов квалификации и промахи (17x6 (2 промаха, 1 задержки, 1 отношение и 2 misses_just) = 102)), и я не хочу, чтобы. Я хочу, чтобы правильная информация была показана на первом снимке.
Хотите обработать меня, пожалуйста?
Спасибо!
Вам необходимо выполнить агрегацию в подзапросах, а затем joi n с этим. – Barmar
И как я могу это сделать? Я не знаю, извините –
Это не точный дубликат этого вопроса, но мой ответ показывает, как сделать соединение с подзапросом. – Barmar