Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/05/2016, 17:03
cdmarco92
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Comparar el resultado de 2 consultas

Buen día tengan todos.
Recurro a este a grupo porque no encuentro solución a lo que quiero hacer que es lo siguiente.

En un sistema para evaluar alumnos tengo una tabla examen donde guardo las propiedades del mismo, como la materia, el nombre, maestro etc. una tabla auxpregunta y otra auxrespuesta

auxpregunta
-------------------------
id_pregunta - autoincrement
id_examen - int
pregunta - varchar 100
respuesta - varchar 100

auxrespuesta
-------------------------
id_examen - int
id_alumno - int
id_pregunta - int
respuesta - varchar 100

en auxpregunta guardo las preguntas de un examen asociado con el id_examen, cuando el alumno responde dichas preguntas se guardan las respuesas en auxrespuestas y asocio las respuestas con el id_examen y id_pregunta para ordenarlas

en php extraigo las respuestas del examen y las respuestas del alumno para compararlas del siguiente modo.

Código PHP:
//Respuestas del alumno
$respuestaalum mysqli_query(conexion(),"SELECT respuesta FROM auxrespuestas WHERE id_examen = '$exa' AND id_alumno = '$alum' GROUP by id_pregunta ORDER BY id_pregunta ASC");

//Respuestas correctas
$respuestas mysqli_query(conexion(),"SELECT respuesta from auxpregunta 
WHERE id_examen = '$exa' GROUP by id_pregunta ORDER BY id_pregunta ASC "
); 
Ahora no encuentro la forma correcta de compararlos con array_diff no he obtenido los resultados esperados.

Necesito saber cuantas respuestas correctas tiene el alumno para hacer la evaluacion

intente con dos while pero me di cuenta que solo me comparaba el primer resultado con todos los demas
Código PHP:
while ($row $respuestas->fetch_array()) {
      while(
$value $respuestaalum->fetch_array()){
  if (
$row['respuesta']==$value['respuesta']) {
        
$ca+=1;
      }
    }
  }

$promedio 100/$cantidad;
    
$calificacion $ca*$promedio
Alguien me pudiese echar una mano, o decirme si puedo hacerlo desde la misma consulta sql ya que lo eh intentado con la consulta para obtener los datos en una sola variable pero no los puedo obtener ordenados para las 2 tablas

Código:
SELECT auxrespuestas.id_respuesta, auxrespuestas.id_alumno, auxpregunta.id_pregunta, auxpregunta.respuesta 
FROM auxrespuestas, auxpregunta 
WHERE auxrespuestas.id_examen = 1 AND (auxrespuestas.id_alumno = 10320865 and auxpregunta.id_examen=1)GROUP by auxpregunta.id_pregunta ORDER BY auxpregunta.id_pregunta ASC
Con esta consulta obtengo las respuestas ordenadas pero solo del lado de la tabla auxpregunta y si cambio el gruop by a auxrespuestas.id_pregunta obtengo las respuestas ordenadas del lado de la tabla auxrespuestas

Espero me puedan ayudar gracias por la atencion