persona: id_persona, area_id, rut, dv, nombre, fecha_nac, edad, sexo
1, 1, 1111111, 1, Leonardo, 1980-10-22, 34, M
2, 2, 2222222, 2, Maria, 1981-01-23, 33, F
3, 3, 3333333, 3, Luz, 1984-09-05, F
test_personal: id_perso, persona_id, asistencia_id, resultado
1, 1, 2, Bueno
2, 2, 2, Regular
test_sicologico: id_sico, persona_id, asistencia_id, resultado
1, 2, 2, Malo
2, 3, 2, Excelente
test_academico: id_aca, persona_id, asistencia_id, resultado
1, 2, 2, Bueno
test_artistico: id_arti, persona_id, asistencia_id, resutado
1, 1, 2, Bueno
2, 2, 1, Regular
3, 3, 1, Bueno
Yo tengo el siguiente query
Código SQL:
Ver original
SELECT COUNT(DISTINCT (ta.persona_id, tan.persona_id, cn.persona_id, f.persona_id, s.persona_id, t.persona_id)) AS total FROM persona AS a, test_personal AS ta, test_academico AS tan, test_sicologico AS cn, test_artistico AS f, empresa AS e, area AS c WHERE a.id_alumno=ta.persona_id AND a.id_alumno=tan.persona_id AND a.id_alumno=cn.persona_id AND a.id_alumno=f.persona_id AND e.rut=1234 AND ta.asistencia_id=2 AND tan.asistencia_id=2 AND cn.asistencia_id=2 AND f.asistencia_id=2 AND AND c.id_curso=a.curso_id AND e.id_area=c.area_id
Lo que necesito hacer es contar solo los datos únicos de las personas que rindieron estos test, y que su asistencia-id=2 y por rut de la empresa.... El valor que me deberia entregar es 3 y solo llego a dos, alguna idea como solucionar esto para que llegue al valor correcto.
Gracias