Your SlideShare is downloading. ×
  • Like
Multi tablas
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Multi tablas

  • 1,442 views
Published

El objetivo de este archivo

El objetivo de este archivo

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,442
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
50
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 1 -- Base de datos: `multitablas` -- -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `departamento` -- CREATE TABLE IF NOT EXISTS `departamento` ( `iddepto` int(11) NOT NULL, `Depto` varchar(15) NOT NULL, PRIMARY KEY (`iddepto`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Volcar la base de datos para la tabla `departamento` -- INSERT INTO `departamento` (`iddepto`, `Depto`) VALUES (31, 'Ventas'), (33, 'Ingeniería'), (34, 'Producción'), (35, 'Mercadotecnia'); -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `empleado` -- CREATE TABLE IF NOT EXISTS `empleado` ( `Apellido` varchar(20) NOT NULL, `Iddepto` int(11) NOT NULL, KEY `Depto` (`Iddepto`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Volcar la base de datos para la tabla `empleado` -- INSERT INTO `empleado` (`Apellido`, `Iddepto`) VALUES ('Andrade', 31), ('Jordan', 33), ('Hernández', 34), ('Osorio', 33), ('Rodríguez', 34);
  • 2. 2 CONSULTAS MULTITABLAS 1. Listado de la tabla empleados y el listado general de la tabla departamentos SELECT * FROM empleado UNION ( Select * from departamentos) 2. Listado de empleados y nombre del departamento que le corresponde SELECT * FROM empleado INNER JOIN departamento ON empleado.iddepto= departamento.IDdepto 3. Listado de los empleados con el nombre del departamento que les corresponde sin duplicar el campo que los une. SELECT * FROM empleado NATURAL JOIN departamento Como se observa, la Unión nos devolverá en una tabla lógica todos los registros seleccionados tengan o no relación. En el ejemplo, vemos los registros apellido y número de departamento en una sola columna. Nota: Para hacer este tipo de consultas es preferible seleccionar campos con la misma información. La operación Inner Join devolverá los registros coincidentes en ambas tablas de acuerdo a lo establecido en la condición (ON empleado.iddepto= departamento.IDdepto) Es similar a la operación Inner Join; la diferencia estriba en que los campos relacionados no se duplica (solo hay un Iddepto). Nota: Para este efecto los campos coincidentes deben llamarse igual (iddepto)
  • 3. 3 4. Listado que muestre la combinación de todos los registros ambas SELECT * FROM empleado CROSS JOIN departamento 5. Listado de empleados con departamento asociado SELECT * FROM empleado LEFT JOIN departamento ON empleado.iddepto = departamento.IDdepto 6. Listado los departamentos con / sin empleados asociados SELECT * FROM empleado Right JOIN departamento ON empleado.iddepto = departamento.IDdepto Romero 0 null null El Cross Join es el equivalente al producto cartesiano, es decir, multiplica de cada registro. Por ejemplo, el empleado Andrade por cada departamento (ventas, Ingenieria, etc) Left Join vincula las tablas dando prioridad a los registros contenidos en la tabla izquierda (empleado). Si en empleado existiese, Romero sin iddepto; al final de la tabla lógica se vería: Similar a Left Join, solo que la prioridad la otorga a la tabla derecha (departamento). Se observa al final de la tabla lógica que para el departamento de Mercadotecnia no existe empleado asociado.
  • 4. 4 7. Listar los datos de los empleados cuyo id del departamento sea mayor al promedio de estos. Select * from empleado where iddepto > (select avg(iddepto) from departamento) Las subconsultas se emplean cuando la condición inicial es a su vez otra consulta. En el ejemplo la condición principal el WHERE iddepto >. Consulta secundaria necesita solo aquellos superiores al promedio (Selec avg(…..))