Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como unir estas 2 consultas en 1 sola?

Estas en el tema de Como unir estas 2 consultas en 1 sola? en el foro de Mysql en Foros del Web. Hola a todos! Espero que me puedan ayudar con esta consulta que quiero hacer: Tengo la tabla notas con la siguiente info: Legajo________Examen____________Nota 100______________A_______________6 100______________B_______________9 ...
  #1 (permalink)  
Antiguo 07/02/2012, 11:38
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 12 años, 6 meses
Puntos: 2
Pregunta Como unir estas 2 consultas en 1 sola?

Hola a todos!

Espero que me puedan ayudar con esta consulta que quiero hacer:

Tengo la tabla notas con la siguiente info:

Legajo________Examen____________Nota
100______________A_______________6
100______________B_______________9
100______________C_______________4
200______________A_______________7
200______________C_______________8
300______________A_______________1
300______________B_______________8
300______________C_______________3
400______________Z_______________9

etc...

Y en php tengo esta variable que me dice el legajo del alumno logueado: $usu_logueado=100

La 1° consulta que deseo hacer es:
Cantidad de examenes en comun con $usu_logueado y con diferencia de nota < 2:

Código PHP:
SELECT examen,legajo,nota,usu.nota nota_logueado,count(notas.legajo) as cant1
FROM notas 
LEFT JOIN 
(SELECT legajo,examen,nota 
FROM notas 
WHERE legajo
='$usu_logueado'usu 
ON notas
.examen=usu.examen 
WHERE notas
.legajo <> '$usu_logueado' 
AND ABS(notas.nota usu.nota) <'2' 
AND notas.examen IN 
(SELECT examen FROM notas WHERE legajo '$usu_logueado'
GROUP BY legajo ORDER BY cant DESC,legajo
Esta consulta me arroja este resultado:
Legajo-----------cant1
200--------------1
300--------------2


La 2° consulta que deseo hacer es:
Cantidad de examenes en comun con $usu_logueado:

Código PHP:
SELECT examen,legajo,nota,usu.nota nota_logueado,count(notas.legajo) as cant2
FROM notas 
LEFT JOIN 
(SELECT legajo,examen,nota 
FROM notas 
WHERE legajo
='$usu_logueado'usu 
ON notas
.examen=usu.examen 
WHERE notas
.legajo <> '$usu_logueado' 
AND examen IN 
(SELECT examen FROM notas WHERE legajo '$usu_logueado'
GROUP BY legajo ORDER BY cant DESC,legajo
Esta consulta me arroja este resultado:
Legajo-----------cant2
200--------------2
300--------------3

Yo quisiera obtener esta informacion en 1 sola consulta, asi:
legajo---------------cant---------------cant2
200-----------------1____________________2
300-----------------2____________________3


Entiendo que hay que usar LEFT JOIN, pero no me esta saliendo. Me pueden orientar?!

Gracias!
  #2 (permalink)  
Antiguo 07/02/2012, 18:41
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Como unir estas 2 consultas en 1 sola?

Hola pablokru,

Te muestro un ejemplo http://www.sqlfiddle.com/#!2/95432/1 que te puede ayudar.

Espero te sea útil.
  #3 (permalink)  
Antiguo 07/02/2012, 22:50
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: Como unir estas 2 consultas en 1 sola?

Muchas gracias wchiquito! Sos un ejemplo a seguir como usuario de esta web, por la calidad de tu respuesta!

Solo una ultima consulta, sin querer abusar de tu buena onda.

Si le quisiera agregar una condicion adicional a lo expresado anteriormente, como por ejemplo que en cant1 me traiga tambien la Cantidad de examenes en comun con $usu_logueado y con diferencia de nota < 5 si la nota de $usu_logueado = 4


En este caso el resultado deberia ser:
legajo---------------cant1---------------cant2
200_____________________2____________________2
300_____________________2____________________3


Gracias!
  #4 (permalink)  
Antiguo 08/02/2012, 02:35
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Como unir estas 2 consultas en 1 sola?

Hola pablokru,

Un nuevo ejemplo http://www.sqlfiddle.com/#!2/cffbe/1 con algunas mejoras en el diseño de la tabla además de la nueva condición.

Espero te sea útil.

Etiquetas: join, php, select, tabla
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 17:44.