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

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Multi tablas

1,553

Published on

El objetivo de este archivo

El objetivo de este archivo

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,553
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
53
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(…..))

×