Comando Join
El comando JOIN en mysql, sirve para combinar dos o mas tablas según las designaciones de variables que queremos o necesitamos.
unión entre varias tablas, devuelve la información que encuentra esa unión
Sintaxis
select * from Tabla_1 inner join tabla_2 on tabla_1.id = tabla_2.id inner join tabla_3 on tabla_2.id2 = tabla_3.id3
Visualizar el código del libro, el nombre del libro, el código del autor y el nombre del autor con sus respectivos libros escritos
select distinct libro.idlibro,libro.descripcion,autor.codautor,autor.nombre from libro inner join liautedi on libro.idlibro = liautedi.idlibro inner join autor on liautedi.codautor=autor.codautor;
Exportar a excel la consulta
into outfile 'c:/xampp/libroautorjoin.xls'
select distinct libro.idlibro,libro.descripcion,autor.codautor,autor.nombre from libro inner join liautedi on libro.idlibro = liautedi.idlibro inner join autor on liautedi.codautor=autor.codautor into outfile 'c:/xampp/libroautorjoin.xls';
Análisis
Que se desea consultar y de que tablas?
libro.idlibro
libro.descripcion
autor.codautor
autor.nombre
Que tablas se ven afectadas o involucradas?
libro - autor - liautedi
Como se relacionan las tablas
libro.idlibro = liautedi.idlibro
autor.codacutor = liautedi.codautor
Que comando se debe utilizar
Select - Join
Visualizar los autores con las editoriales que les publican
select autor.nombre,editorial.nombre from autor inner join liautedi on autor.codautor = liautedi.codautor inner join editorial on editorial.codedit = liautedi.codedit;
Análisis
Que se desea consultar y de que tablas?
autor.nombre
editorial.nombre
Que tablas se ven afectadas o involucradas?
autor - liautedi - editorial
Como se relacionan las tablas
autor.codautor = liautedi.codautor
editorial.codedit = liautedi.codedit
Que comando se debe utilizar
Select - Join
El left join se utiliza para saber que registros no tienen correspondencia en otra tabla. Verifica de una tabla izquierda a una tabla derecha, si no encuentra coincidencia se genera una fila extra con todos los campos ceteados a NULL
Visualizar que libros no se les ha asignado un autor
select libro.idlibro,libro.descripcion,liautedi.idlibro from libro left join liautedi on libro.idlibro=liautedi.idlibro where liautedi.idlibro is null ;
select asignatura.codigomat,asignatura.nombre,libro.codigomat from asignatura left join libro on asignatura.codigomat=libro.codigomat where libro.codigomat is null;
El right join opera del mismo modo que el left join solo que la búsqueda de coincidencias las realiza del modo contrario, es decir busca valores de coincidencias desde la tabla de la derecha hacia la tabla de la izquierda y sucede lo mismo que en el left, sino encuentra coincidencias se genera una fila extra con todos los campos ceteados en null
Visualizar el listado de los libros que tienen al menos un autor asignado
select distinct libro.descripcion,libro.idlibro from libro right join liautedi on libro.idlibro=liautedi.idlibro where libro.idlibro is not null;
Otra forma select distinct libro.descripcion,libro.idlibro,liautedi.idlibro from libro right join liautedi on libro.idlibro=liautedi.idlibro;
Group by
Agrupar información
select * from Nom_tabla gropu by Nom_campo
select * from estudiantes gropu by Nom-EE;
Usando las funciones (Count,min,max,sum,avg)
Visualizar las cantidades de visitantes por ciudad
select nombre_campo(s), funcion(campo_funcion) as nombre_deseado from Nom_tabla group by Nom_campo;
select ciudad ,count (montocompra) 'cantidad visitantes' from visitantes group by ciudad;
Análisis
Que se desea consultar
Ciudad
Campo en el que se aplica la función
Montocompra
Campo por el cual va a agrupar
Ciudad
Comando y función
Group by - count
Comando
Group by
Visualizar el total comprado por ciudad
select ciudad,sum(montocompra) 'El total comprado por ciudad es' from visitantes group by ciudad;
Análisis
Que se desea consultar
Ciudad
Campo en el que se aplica la función
montocompra
Campo por el cual va a agrupar
ciudad
Comando y función
Group by - sum
Group by
Visualizar el monto de compra por sexo
select sexo,sum(montocompra) 'gasto por sexo' from visitantes group by sexo;
Análisis
Que se desea consultar
sexo
Campo en el que se aplica la función
montocompra
Campo por el cual va a agrupar
sexo
Comando y función
Group by - sum
Comando
Group by
visualizar las ciudades a las que van mas de dos visitantes
Nota: Cuando utilizamos group by y se manejan condiciones estas no funcionan con where sino con la opción having
select ciudad,count(ciudad) 'cantidad de visitantes' from visitantes group by cuidad having count(ciudad) > 2;
Análisis
Que se desea consultar
ciudad
Campo en el que se aplica la función
Ciudad
Campo por el cual va a agrupar
ciudad
Comando y función
Group by - count
Comando
Group by
Calcular el valor promedio de montocompra agrupados por ciudad y sexo
select ciudad,sexo,avg(montocompra) 'gasto por sexo' from visitantes group by ciudad,sexo;
Análisis
Que se desea consultar
ciudad - sexo
Campo en el que se aplica la función
montocompra
Campo por el cual va a agrupar
ciudad - sexo
Comando y función
Group by - avg
Comando
Group by
Visualizar el monto por ciudad mayores a 5 millones
select ciudad,sum(montocompra) 'el monto mayor a 5 millones' from visitantes group by montocompra having sum(montocompra)>5000000
Análisis
Que se desea consultar
ciudad
Campo en el que se aplica la función
montocompra
Campo por el cual va a agrupar
ciudad
Comando y función
Group by - sum
Comando
Group by