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

Unir 2 tablas

Estas en el tema de Unir 2 tablas en el foro de Mysql en Foros del Web. Hola tengo 2 tablas una alumnos y otra notas , alumnos tiene : id_alumno cod_alumno nombre apellidos notas tiene: id_notas cod_notas notas curso profesor ciclo ...
  #1 (permalink)  
Antiguo 31/12/2013, 09:28
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Pregunta Unir 2 tablas

Hola tengo 2 tablas una alumnos y otra notas , alumnos tiene :

id_alumno
cod_alumno
nombre
apellidos

notas tiene:

id_notas
cod_notas
notas
curso
profesor
ciclo

Entnces cod_alumno sera = cod_notas ya que siempre tendran el mismo cod ejemplo 00000000001, mi pregunta es si se puede unir las 2 tablas para sacar el nombre del alumno, todas las notas por ciclo el curso de cada nota y el profesor de cada nota, muchas gracias espero haberme expresado bien salu2

ejemplo de los registros:

tabla : alumnos

id_alumno | cod_alumno | nombre |apellidos

1 0000001 alex villanueva


tabla: notas

id_notas | cod_notas | notas | curso | profesor | ciclo
1 0000001 15 fisica maldonado 1
2 0000001 18 mate maldonado 1
3 0000001 17 biologia maldonado 1
4 0000001 13 quimica maldonado 1
5 0000001 14 algebra maldonado 1
6 0000001 16 geome maldonado 2
7 0000001 17 php maldonado 2
8 0000001 18 css maldonado 2
9 0000001 19 html maldonado 2
10 0000001 13 js maldonado 2

al hacer una consulta por ciclo me tiene que salir el estudiante + todas sus notas por ciclo con el curso y el profesor con el que llevo el curso, muchas gracias espero que me ayuden por favor.
  #2 (permalink)  
Antiguo 31/12/2013, 09:34
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Unir 2 tablas

Si tanto alumnos como notas está relacionadas como dices (por medio de cod_alumno y cod_notas) puedes usar JOIN

La verdad es una consulta muy básica y con solo haber buscado en Google hubieses encontrado muchos resultados

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 31/12/2013, 10:45
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Unir 2 tablas

La verdad que si busque, eh hice exactamente lo que me dices, el problema esta que al comprar cod_alumno con cod_notas , me sale la consulta por ciclo pero no todas las notas si no solo la primera de cada registro del alumno , espero entiendas ya que si lo analisas bien es algo complejo, hasta donde yo se lo eh intentado y no me ah salido es por eso que pido ayuda muchas gracias.
  #4 (permalink)  
Antiguo 31/12/2013, 10:46
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Unir 2 tablas

Pues muestra como has intentado hacer. Así es más fácil guiarte ya que en mi caso haciendo un join normal funciona como espero

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #5 (permalink)  
Antiguo 31/12/2013, 10:49
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Unir 2 tablas

Código MySQL:
Ver original
  1.  
  2. FROM alumno AS alum
  3.  
  4. FROM notas
  5. ) AS nota ON alum.cod_alu = nota.Cod_alu
  6. WHERE alum.carrera='".$carrera."' AND  nota.CICLO = '".$ciclo."' GROUP BY alum.ape_pat ASC

Última edición por gnzsoloyo; 31/12/2013 a las 11:53
  #6 (permalink)  
Antiguo 31/12/2013, 10:53
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Unir 2 tablas

Pues lo estás haciendo mal, muy mal. No se de donde sacaste de que eso es un JOIN normal...

Deberías hacer algo como esto:

Código MySQL:
Ver original
  1. SELECT * FROM alumno alum JOIN notas nota ON alum.cod_alu = nota.Cod_alu WHERE alum.carrera = '$carrera' AND nota.CICLO = '$ciclo' GROUP BY alum.ape_pat

PD: Acostúmbrate a publicar el código con el Highlight que ofrece el foro.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #7 (permalink)  
Antiguo 31/12/2013, 10:59
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Unir 2 tablas

Hice la consulta tal como me la mostraste, y me sale igual a la consulta que te mostre , ocea me sale todo okey pero no me muestra todas las notas del alumno por ciclo si no el primer registro ocea solo una nota y deberia mostrarme todas las notas , estuve leyendo algo de sub consultas .
  #8 (permalink)  
Antiguo 31/12/2013, 11:00
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Unir 2 tablas

Lo mas seguro es que sea por el GROUP BY alum.ape_pat, quitalo y has la pruebas

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #9 (permalink)  
Antiguo 31/12/2013, 11:04
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Unir 2 tablas

El problema es que si le quito entonces se repetiran los nombres, desde luego me mostrara todos los registros con sus notas pero lo que yo quiero es que me muestre un solo nombre con su apellido + la nota de la consulta por ciclo. ayúdame por favor...
  #10 (permalink)  
Antiguo 31/12/2013, 11:07
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Unir 2 tablas

Lo que pides de esa manera es imposible (al menos en mi ignorancia) y se puede resolver mas fácilmente mediante programación.

Que lenguaje de programación usas?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #11 (permalink)  
Antiguo 31/12/2013, 11:10
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Unir 2 tablas

Tu crees que sea imposible?, estoy usando php para mostrar esa consulta en una tabla como te dije estube leyendo algo sobre sub consultas avanzadas pero no eh llegado a dar con la solución, gracias.
  #12 (permalink)  
Antiguo 31/12/2013, 13:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Unir 2 tablas

Cita:
Iniciado por videlxu Ver Mensaje
El problema es que si le quito entonces se repetiran los nombres, desde luego me mostrara todos los registros con sus notas pero lo que yo quiero es que me muestre un solo nombre con su apellido + la nota de la consulta por ciclo. ayúdame por favor...
La repetición de datos es una consecuencia inevitable del JOIN. El problema es que lo que tu quieres es un reporte o informe de cada conjunto de todas con asignaturas y profesores en cada caso, y eso se hace programáticamente, no en la consulta.
Algunos DBMS (Oracle, por ejemplo) tienen recursos adicionales para crear ese tipo de consultas, o bien cláusulas que permiten hacer alguna parte de ese reporte, pero son recursos adicionados al DBMS en cuestión y no parte del SQL.
Con esto me refiero a que son agregados que cada DBMS le adiciona al SQL que usa, como son las funciones de fecha y hora, que en cada uno de ellos tiene un formato y sintaxis diferente.

En resumen: El INNER JOIN que usas (limpiándolo un poco de basura) te devolverá los datos útiles que cumplen con las condiciones pedidas, pero es a nivel de programación (off-topic) que deberás resolver la representacion de los datos de acuerdo a tus necesidades.
¿Cómo?
Bueno, es demasiado simple como para que no lo notes, pero te lo describo así:
recorres iterativamente la tabla de datos obtenida y vas mostrando los datos, haciendo que se visualicen los nombres de los alumnos si y sólo si son diferentes al ultimo mostrado (y obviamente comenzando por mostrar el primero).
Este es un esquema muy sencillo de programar, en el que te pueden ayudar sin problemas en el foro de PHP (y en muchos manuales y tuturiales donde describen ese metodo).

Lo que quiero que te quede claro es que la base de datos no se ocupa de cómo se visualizan los datos. Eso lo hace la aplicación. La misión del DBMS es devlverte la información útil, no ver qué haces con ella.
De allí que existe el modelo MVC, y otros así, donde la interfaz de usuario muestra, la de negocio prepara y gestiona, y la de datos almacena y devuelve.
Prepara lo que se va a visualizar en la capa de negocio, no en la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 31/12/2013, 16:15
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Unir 2 tablas

Entiendo en mysql es imposible hacer ese tipo de consultas entonces se podria hacer en php?? tienes alguna idea
  #14 (permalink)  
Antiguo 31/12/2013, 16:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Unir 2 tablas

No estás entendiendo...
En MySQL haces la consulta.
En PHP construyes la vista de la tabla con los datos de la consulta, visualizando los datos que necesitas de la forma que quieres.
No es uno u otro. Es con ambas cosas a la vez, casa una en su etapa.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 31/12/2013, 17:13
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: Unir 2 tablas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No estás entendiendo...
En MySQL haces la consulta.
En PHP construyes la vista de la tabla con los datos de la consulta, visualizando los datos que necesitas de la forma que quieres.
No es uno u otro. Es con ambas cosas a la vez, casa una en su etapa.
Sii entiendo lo que me tratas de decir , pero como dejo de mostrar datos repetidos de la consulta en php ?? se puede hacer eso algun ejemplo no tengo idea
  #16 (permalink)  
Antiguo 31/12/2013, 19:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Unir 2 tablas

Es tema de programación, no de BBD, por tanto y como dicen las reglas del foro de Bases de Datos, cómo lograr eso lo debes consultar en el Foro del lenguaje correspondiente.
No se tratan temas de programación en este foro.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, registro, tabla, tablas
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 04:29.