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

combinar 3 tablas relacionas, sentencia sql

Estas en el tema de combinar 3 tablas relacionas, sentencia sql en el foro de Bases de Datos General en Foros del Web. hola un saludo a todos... necesito resolver el siguiente problema... tengo 3 tablas relacionadas por un id ejemplo: tabla alumnos: idalumno nombres 1 luis 2 ...
  #1 (permalink)  
Antiguo 25/09/2010, 16:55
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Mensaje combinar 3 tablas relacionas, sentencia sql

hola un saludo a todos...
necesito resolver el siguiente problema...

tengo 3 tablas relacionadas por un id ejemplo:

tabla alumnos:

idalumno nombres
1 luis
2 predro
3 marcos
. .
. .
. .


tabla actividades:

idactividad descrición
1 tareas
2 taller
. .
. .
. .

tabla alumnos_actividades

idalumnos_actividades idalumno idactividad calificacion
1 1 2 3,2
2 2 1 3,1
. . . .
. . . .
. . . .

de esta combinacion necesito generar una consulta de este tipo

nombres descricion nota
luis taller 3,2
luis tareas null
pedro tareas 3,1
pedro taller null
. . .
. . .
. . .

he intentado pero no lo he logrado agradezco de ante mano...su colaboración
gracias...y saludos
  #2 (permalink)  
Antiguo 26/09/2010, 07:55
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: combinar 3 tablas relacionas, sentencia sql

Una forma simple puede ser esta. Espero funcione:

Cita:
SELECT nombre, actividad, nota FROM alumnos, actividades, descripcion WHERE alumnos.idalumno = alumnos_actividades.idalumno AND actividades.idactividad = alumnos_actividades.actividad
A mi parecer son medio largos algunos nombres. Me refiero a los nombres de las id. Yo les pondrías "id" a secas.
  #3 (permalink)  
Antiguo 26/09/2010, 11:53
Avatar de SDEK  
Fecha de Ingreso: diciembre-2009
Ubicación: MX
Mensajes: 156
Antigüedad: 15 años
Puntos: 8
Respuesta: combinar 3 tablas relacionas, sentencia sql

Hola,

La mejor manera de resolver la consulta a mi parecer es esta:

Código SQL:
Ver original
  1. SELECT Al.nombre, Ac.descripcion, AlAc.calificacion AS nota
  2. FROM Alumnos AS Al INNER JOIN
  3.      Alumnos_Actividades AS AlAc ON Al.idAlumno=AlAc.idAlumno INNER JOIN
  4.      Actividades Ac ON Ac.idActividad=AlAc.idActividad

Espero que te sea de utilidad,

Saludos,
__________________
Tecnologías de la Información
Karel Priego
| @karelpriego
  #4 (permalink)  
Antiguo 26/09/2010, 23:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 3
Antigüedad: 14 años, 2 meses
Puntos: 0
Mensaje Respuesta: combinar 3 tablas relacionas, sentencia sql

Gracias por sus respuestas...
no se si no me he explicado bien...la sentencias--->

SELECT
alumnos.IDALUMNOS,
alumnos.APELLIDO1,
alumnos.APELLIDO2,
alumnos.NOMBRE1,
alumnos.NOMBRE2,
actividades.IDACTIVIDADES,
actividades.DESCRIPCION,
alumnoactividad.NOTA
FROM
alumnoactividad alumnoactividad
INNER JOIN actividades actividades
ON alumnoactividad.IDACTIVIDAD = actividades.IDACTIVIDADES
INNER JOIN alumnos alumnos
ON alumnoactividad.IDALUMNOS = alumnos.IDALUMNOS

-->solo me genera los alumnos que tienen una actividad calificada...yo deseo mostrar ademas los alumnos que no tienen actividades capacitadas...ejemplo

nombres descricion calificacion
luis taller 3,2
luis tareas null <--->estos son los registros que quiero tambien<--->
pedro tareas 3,1
pedro taller null<--->estos son los registros que quiero tambien<--->
  #5 (permalink)  
Antiguo 27/09/2010, 03:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: combinar 3 tablas relacionas, sentencia sql

Mira. Abriste otro post distinto con este problema, uno en este foro y otro en el subforo de MySQL:
http://www.forosdelweb.com/f86/combi...ia-sql-845206/

Yo te respondí con una propuesta en el más reciente que habías posteado, en de MySQL y como veo que no le volviste a prestar atención, te lo copio de nuevo en este:


Cita:
Algo así:
Código MySQL:
Ver original
  1. nombres,
  2. descricion,
  3. nota
  4. alumnos A
  5. LEFT JOIN alumnos_tareas AL ON A.idealumno = AL.idalumno
  6. LEFT JOIN actividades AC ON A.idactividad = AC.idactividad;
O así:
Código MySQL:
Ver original
  1. nombres,
  2. descricion,
  3. nota
  4. alumnos A
  5. LEFT JOIN alumnos_tareas AL ON A.idealumno = AL.idalumno
  6. LEFT JOIN actividades AC ON A.idactividad = AC.idactividad
  7. WHERE idalumno IS NOT NULL OR califiacion IS NULL;
Para otra ocasión, procura no abrir varios post con la misma pregunta o de lo contrario te los pueden cerrar y además le pierdes el rastro a las respuestas que te dan...
__________________
¿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: combinar, sentencia, sql, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:06.