Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Comparar el resultado de 2 consultas

Estas en el tema de Comparar el resultado de 2 consultas en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/05/2016, 17:03
 
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
  #2 (permalink)  
Antiguo 24/05/2016, 08:56
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Comparar el resultado de 2 consultas

con una consulta similar a esta traería cuales fueron las preguntas que contesto correctas el alumno.

Código PHP:
select from auxrespuesta ar
inner join auxpregunta ap
on ar
.id_pregunta ap.id_pregunta
AND ar.respuesta ap.respuesta
where id_examen 
and id_alumno 13579 
  #3 (permalink)  
Antiguo 24/05/2016, 11:40
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Comparar el resultado de 2 consultas

Amigo la consulta la probe en mysql y funciona muy bien, trae los resultados que dices, ya con eso me haz ayudado bastante muchas gracias.

Es obvio que me falta comprender mas sobre el lenguaje sql, ya que la consulta que me proporcionaste no la pude construir por mi cuenta, crees que me puedas explicar como funciona, no estoy muy familiarizado con el inner join.
  #4 (permalink)  
Antiguo 24/05/2016, 11:46
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Comparar el resultado de 2 consultas

dmarco... en si el join lo que permite es unir 2 o mas tablas... con el ON comparas los datos que se relacionan entre las 2 tablas, en este caso tanto la pregunta como la respuesta... luego colocas un where normalito con las condiciones adicionales en este caso el examen que quieres consultar y el usuario del que quieres la información.

Los inner join tiene diferentes variantes left join, right join.. dependiendo como quieres que te devuelva los datos, en internet hay muchos tutos explicados del tema con ejemplos para que lo entiendas facilmente.. son muy útiles este tipo de consultas.

espero hayas entendido un poco mejor!!!
  #5 (permalink)  
Antiguo 24/05/2016, 13:04
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Comparar el resultado de 2 consultas

ok muchas gracias amigo, voy a buscar mas tutoriales la verdad estaba un poco estresado.
Y una ves mas gracias por responder y aclararme la consulta.

Etiquetas: mysql, resultado, select, sql, tabla, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:46.