Ver Mensaje Individual
  #5 (permalink)  
Antiguo 20/05/2012, 23:27
Avatar de gerardo_goh
gerardo_goh
 
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: duda con los joins

tengo el siguiente la siguiente respuesta creo que esta bien.

create table tblalumnos(idalumno integer null,
nombre varchar(15) null,
grupo varchar(5) null);

create table tblmaterias(idmateria integer null,
descripcion varchar(15) null);

create table tblcalificaciones(idalumno integer null references tblalumnos (idalumno),
idmateria integer null references tblmaterias (idmateria),
calificacion decimal(8,2) null);


insert into tblalumnos(idalumno,nombre,grupo)
values (1,'jorge','G1'),
(2,'julio','G2'),
(3,'oscar','G1'),
(4,'ricardo','G1');


insert into tblmaterias(idmateria,descripcion)
values (1,'matematicas'),
(2,'ingles');

insert into tblcalificaciones(idalumno,idmateria,calificacion)
values (1,1,10),
(3,1,9),
(1,2,6.7),
(4,2,5),
(2,1,9.8);

-- query para cuando es para una materia en especifico --
select x.nombre,y.calificacion,z.descripcion from tblalumnos x
inner join tblcalificaciones y on x.idalumno=y.idalumno
inner join tblmaterias z on y.idmateria=z.idmateria
where y.idmateria=1;


-- para cuando quieres saber de un grupo en especial --
select x.nombre,z.calificacion from tblalumnos x
left join (select * from tblcalificaciones) z on x.idalumno=z.idalumno
where x.grupo ='G2' and z.idalumno is not null and z.idmateria=1
group by x.nombre;


Si algo esta mal espero que me orientes, Saludos!!!

Última edición por gerardo_goh; 20/05/2012 a las 23:32