domingo, 9 de diciembre de 2012

EJEMPLO DE JOINS MySQL


En esta practica aplicamos los 7 tipos de JOIN's permitidos por MySQL, a continuación se muestra el scritp.



drop database if exists jointipos;
create database jointipos;
use jointipos;

create table funciones(
id_funcion varchar(4) not null,
nom_funcion varchar(7)not null,
primary key(id_funcion)
)type=innodb;
insert into funciones values('A-01','Mecanico');
insert into funciones values('A-02','Carpintero');
insert into funciones values('A-03','Bombero');

create table deptos(
id_depto varchar(4) not null,
nom_deptp varchar(7)not null,
primary key(id_depto)
)type=innodb;
insert into deptos values('B-01','Taller 1');
insert into deptos values('B-02','Taller 1');
insert into deptos values('B-03','Estación');

create table localidad(
id_localidad varchar(4) not null,
nombre varchar(15)not null,
primary key(id_localidad)
)type=innodb;
insert into localidad values('C-01','Benito Juarez');
insert into localidad values('C-02','Lindavista');
insert into localidad values('C-03','Coapa');

create table empleado(
id_empleado varchar(7) not null,
nom_empleado varchar(10) not null,
id_funcion varchar(4) not null,
id_depto varchar(4) not null,
id_localidad varchar (4) not null,
primary key(id_empleado),
foreign key (id_funcion) references funciones(id_funcion) on update cascade,
foreign key (id_depto) references deptos(id_depto) on update cascade,
foreign key (id_localidad) references localidad(id_localidad) on update cascade
)type=innodb;
insert into empleado values('01','JUAN','A-02','B-02','C-01');
insert into empleado values('02','CARLOS','A-03','B-03','C-02');
insert into empleado values('03','ARTURO','A-01','B-01','C-03');
insert into empleado values('04','DIEGO','A-03','B-03','C-01');
insert into empleado values('05','LUIS','A-01','B-01','C-02');



Aplicando el "LEFT JOIN" :


select * from table1,table2 where  table1.id=table2.id;






Aplicando el "INNER JOIN"


select from empleado.id_empleado,deptos.id_depto,empleado.nom_empleado from empleado inner join deptos on empleado.id_empleado=deptos.id_depto;




Aplicando el "RIGHT JOIN"


select  empleado.id_empleado,deptos.id_depto,empleado.nom_empleado from empleado right  join deptos on empleado.id_empleado=deptos.id_depto;




Aplicando un "OUTER JOIN"



select  empleado.id_empleado,deptos.id_depto,empleado.nom_empleado from empleado right OUTER join deptos on empleado.id_empleado=deptos.id_depto;


APLICANDO EL EQUI JOIN

select * from empleado inner join deptos on empleado.id_depto=deptos.id_depto;




APLICANDO EL NATUAL JOIN


select * from empleado naturla join deptos;




APLICANDO EL CROSS JOIN


selec * from empleado cross join funciones: