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

Relacionar los datos de una tabla de 3 campos

Estas en el tema de Relacionar los datos de una tabla de 3 campos 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 05/02/2012, 15:30
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Relacionar los datos de una tabla de 3 campos

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...

Lo que deseo hacer es una comparativa entre el alumno logueado y todo el resto.

El alumno logueado es un dato: Por ejemplo $usu_logueado=100

Este es el resultado esperado en la pagina al comparar al alumno 100 con todo el resto:

Legajo--------Afinidad
200____________100%
300_____________66%


Legajo: quiero que aparezcan todos los legajos de los alumnos que dieron los mismos examenes que $usu_logueado

Afinidad: quiero que me haga la siguiente cuenta:
(cantidad de examenes en comun con $usu_logueado y con diferencia de nota < 2)
dividido
(cantidad de examenes en comun con $usu_logueado)

Espero me puedan ayudar, muchas gracias!
  #2 (permalink)  
Antiguo 06/02/2012, 01:22
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Relacionar los datos de una tabla de 3 campos

Cuando te refieres a $usu_logueado supongo que estás hablando de php. Lo que necesitas se resuelve por programación y además conociendo a fondo el código de tu aplicación. Es imposible ayudarte sin el ver código, las tablas, y además, hay saber exactamente como funciona tu programa.
Te recomiendo un tutorial de php + mysql, si no lo resuelves, entonces postea otra vez.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 06/02/2012, 08:37
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Respuesta: Relacionar los datos de una tabla de 3 campos

Hola. Si, estoy utilizando php + Mysql.

Yo logro realizar las consultas deseadas, pero haciendo 3 consultas por separado:

Legajo: quiero que aparezcan todos los legajos de los alumnos que dieron los mismos examenes que $usu_logueado:

Código PHP:
SELECT legajo 
FROM notas 
WHERE legajo
<>'$usu_logueado' 
AND examen IN 
(SELECT examen FROM notas WHERE legajo='$usu_logueado'); 
Esta consulta me arroja este resultado:
Legajo
200
300

Afinidad:
(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(legajo) as cant 
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:
Afinidad1
1
2


(cantidad de examenes en comun con $usu_logueado):

Código PHP:
SELECT examen,legajo,nota,usu.nota nota_logueado,count(notas.legajo) as cant 
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:
Afinidad2
2
3


Yo quisiera obtener esta informacion en 1 sola consulta, asi:
Legajo--------Afinidad1----------------Afinidad2
200____________1___________________________2
300____________2___________________________3



Gracias!
  #4 (permalink)  
Antiguo 06/02/2012, 11:17
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Relacionar los datos de una tabla de 3 campos

Para obtener este resultado necesitas utlilizar LEFT JOIN, comprueba el manual. Si no lo entiendes o todavía no tienes el el nivel como para usarlo correctamente, entonces guarda los resultados de todas las consultas en un array y luego haces la salida por pantalla con el formato deseado. Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 06/02/2012, 11:34
 
Fecha de Ingreso: octubre-2011
Ubicación: Buenos Aires
Mensajes: 84
Antigüedad: 13 años, 1 mes
Puntos: 2
Respuesta: Relacionar los datos de una tabla de 3 campos

Para estas consultas que hice, utilice LEFT JOIN, pero al tratar de juntar estas tres consultas se me complico con esta funcion.

Me podes orientar en como unir estas consultas con esta funcion?

Gracias.

Etiquetas: campos, relacionar, 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 13:40.